kronn.de

DOCTYPE-Erklärung

Während wir von den ganzen Vorteilen von CSS träumen, vergessen wir nur zu leicht, dass dafür auch vernüftiges HTML vorhanden sein muss. Wesentliches Merkmal einer guten HTML-Datei ist die DOCTYPE-Declaration.

Falls du dir bisher noch keine Gedanken darüber gemacht hast und nicht so recht weißt, was genau nun

  • eine DOCTYPE-Declaration überhaupt ist,
  • wo diese hingehört und
  • welche empfehlenswert sind,

musst du keine Panik haben. Mir ging es genauso. Aber der Reihe nach:

  1. Die DOCTYPE-Declaration, kann mit DTD (für Document Type Definiton) abgekürzt werden und ist für den Browser die Quellenangabe für den Code den er bekommt. Der DOCTYPE sagt dem Browser, was das eigentlich für Daten sind, die er darstellen soll.

    Der DOCTYPE steuert in modernen Browsern das Verhalten des Programms und damit auch die Darstellung unserer Webseiten.

  2. Die DOCTYPE-Deklaration steht am Anfang der HTML-Datei. Ganz am Anfang, meine ich damit. Auch <html> steht erst danach.

  3. Ich empfehle, einen der folgenden drei DOCTYPEs zu verwenden.

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
XHTML 1.0 Strict
Ein wenig Extremismus gehört schon dazu, diesen DOCTYPE zu wählen, aber es zeigt immerhin, dass man die Sache ernst nimmt. Wichtigster Punkt dieses DOCTYPEs ist, dass (ältere) Elemente wie <blink> und <marquee>, aber auch <u> nicht mehr enthalten sind.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
XHTML 1.0 Transitional
Das dürfte der DOCTYPE sein, der am häfigsten verwendet wird. Der wesentliche Vorteil ist, dass es sich zwar um XHTML handelt, aber so gut wie alle alten Elemente noch beinhaltet.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
XHTML 1.0 Frameset
Im Prinzip das gleiche wie Transitional, sollte bei Verwendung von Frames eingesetzt werden.

Der DOCTYPE sollte in einer Zeile stehen, ein Zeilenumbruch nach //EN" wie bei den obigen Beispielen ist aber auch durchaus üblich und wird von den Browsern problemlos verstanden.

Anmerkungen

Einige Anmerkungen, wenn auch nur am Rande, möchte ich aber noch dazu machen:

  • Es gibt auch eine XHTML 1.1 DOCTYPE, der an "Strenge" sogar XTHML 1.0 Strict übertrifft. Die Unterschiede sind allerdings nicht so groß, dass es unmöglich ist, ihn anzuwenden. Ich stelle meine Seiten nach und nach auf diesen DOCTYPE um.

  • Die URL im DOCTYPE ist aus technischer Sicht optional. In der Praxis verhalten sich allerdings die Browser etwas anders, jenachdem, ob die URL angegeben ist oder nicht. Mit Angabe dieser Adresse verhält sich der Browser, so komisch das klingen mag, standardkonform, ohne diese Adresse schaltet er zurück auf Hersteller-eigene Darstellungsmethoden.

  • Das W3C empfiehlt, dass bei allen XHTML-Varianten eine XML-Deklaration vorhergeht. Obwohl es natürlich möglich ist, immer <?xml version="1.0" encoding="UTF-8"?> davorzusetzen, ist der Nutzen aus meiner Sicht nicht spürbar. Andererseits bringt dieser Zusatz den IE dazu, aus dem Standard-konformen Modus herauszufallen. Um also diese Sorge nicht zu haben, lasse ich diesen Zusatz weg.

Fazit

Da wir mit CSS arbeiten möchten und uns auf die Standards verlassen, sollten wir vollständiges, standardardkonformes HTML schreiben. Dazu gehört auch der richtige DOCTYPE.

Weiteres zum Thema

  1. A List Apart hat auch einen Artikel über das Thema DOCTYPE veröffentlicht, allerdings in Englisch.

Diese Internetseite wurde von kronn von Hand getippt und
besteht aus geprüftem XHTML und CSS.
Das hat viele Vorteile.

Weitere Seiten mit diesem Vorteilen preisen gutes Webdesign an, enthalten Texte oder sind ein Weblog.
So ist das Leben eben.
http://kronn.de/ © Kronn/2003-2005


Fatal error: Uncaught Error: Call to undefined function set_magic_quotes_runtime() in /var/www/K1054131198/docroot/kronn.de/etc/counter/counter.php:61 Stack trace: #0 /var/www/K1054131198/docroot/kronn.de/templates/default.php(52): include() #1 /var/www/K1054131198/docroot/kronn.de/index.alt.php(51): include_once('/var/www/K10541...') #2 {main} thrown in /var/www/K1054131198/docroot/kronn.de/etc/counter/counter.php on line 61