Okt 2008

DOCTYPE – Document Type Definition (DTD) - zur Bestimmung der HTML-Version

 
 

Das <!DOCTYPE>-Tag gibt die Document Type Definition (DTD) des Dokuments an. Die DTD bestimmt die Grammatik und die Syntax der HTML-Sprache. Kurz gesagt: Der Dokumententyp am Anfang einer HTML-, XHTML, XML- … Datei gibt an, um welchen Typ von Dokument es sich handelt, damit Browser erkennen, wie sie ein Dokument darzustellen haben.

Durch die Angabe des Doctypes im Kopf des HTML-Documents vereinbart der Webdesigner also nicht nur HTML-Version, sondern teilt dem Browser mit, wie sauber das Dokument angelegt wird.

Das Tag ist zwar nicht zwingend erforderlich, aber das W3C (World Wide Web Consortium), das den Standard für HTML 4.01 spezifiziert, empfiehlt, das <!DOCTYPE>-Tag stets zu setzen.

In XHTML-Seiten ist das !DOCTYPE-Tag immer erforderlich. Während es in XHTML 1.0 noch drei Dokumententypen gab, die dem Webdesigner ein gewisses Maß an Freiheit ließen, gibt es für XHTML-Seiten nur noch einen einzigen Dokumententypen, der besagt, dass sich der Entwickler strikt an die Regeln halten will.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
        
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
        "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

Doctype und Quirks-Modus

Der Doctype hat nicht nur Auswirkungen auf die Darstellung des Markups und die Anwendung von CSS-Stilen, sondern auch Skripte werden ja nach Doctype unterschiedlich interpretiert.

Auf der Basis des Doctypes sind Validatoren in der Lage, das Dokument auf Syntaxfehler zu prüfen – zu validieren. Gerade wenn Skripte auf dem DOM aufbauen, ist ein korrektes Markup die Basis für ein reibungsloses Skript ohne gefährliche Stolperfallen. Darüber hinaus benutzen moderne Browser die Angabe des Doctypes, um ihr Verhalten zu ändern: Im Modus strict verhalten sie sich standardkonform, im Modus loose (Quirksmodus) simulieren sie die Fehler ihrer Vorgängerversionen, um alte HTML-Dokumente nicht ins Unglück zu stürzen.

Quirksmode-Verhalten: Mozilla Quirks Mode Behavior
Safari hält sich an Mozilla.

Einfluß des Doctypes: The Opera 7 und 8 Doctype Switches

Die Elemente des Doctype-Tags

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">

DOCTYPE HTML PUBLIC
bedeutet, dass sich das Dokument auf die öffentlich verfügbare HTML-DTD bezieht.
"-//W3C//DTD HTML 4.01//EN"
kennzeichnet das W3C als maßgeblichen Herausgeber des Dokumententyps "HTML", der in der Version 4.01 im Dokument benutzt wird. EN ist die Sprachangabe (Englisch) und bezieht sich nicht auf den Inhalt des Dokuments, sondern auf die Notation von HTML-Elementen und -Attributen.
Die URL http://www.w3.org/TR/1999/REC-html401-19991224
erlaubt dem User Agent (Browser), die DTD und darin enthaltene Regeln und Elemente zu laden, wenn sie benötigt werden. Theoretisch wäre es einem Browser dadurch möglich, auch neuere Versionen von HTML, die nach dem Erscheinen des Browsers veröffentlicht werden, korrekt zu interpretieren. In der Praxis ist wohl kaum ein Browser in der Lage, tatsächlich neuere Regeln nachträglich zu adaptieren. Die Adresse ist demzufolge auch nicht erforderlich.
strict
schließt aus, dass die Darstellung des Dokuments Elemente und Attribute benutzt, die das W3C als Aufgabe von Stylesheets ansieht. Auch die Benutzung der HTML-Elemente innerhalb des Dokuments wird bei strict sehr eng gesehen. So müssen alle Elemente innerhalb des body-Elements in Blockelementen stehen. Ein Text, der ohne umschließende <p>-Tags direkt zwischen das öffnende und schließende <body>-Tag geschrieben wird, wird bereits als Verletzung der Syntaxregeln angesehen. Webautoren sind angehalten, strict DTD so weit wie möglich anzuwenden, es bleibt Ihnen aber überlassen, transitional zu nutzen, wenn für die Präsentation des Dokuments bestimmte Elemente und Attribute erforderlich sind.
transitional
kennzeichnet ein Dokument, in dem Elemente und Attribute benutzt werden, die als unerwünscht gelten. Wer seine Dokumente auch für Browser, die Stylesheets noch nicht beherrschen (z.B. Netscape 3), grafisch und typografisch aufbereiten möchte, wird diese Variante sicherlich bevorzugen.
frameset
kennzeichnet ein Dokument, das Frames (nicht iframe) benutzt.

Beispiele für verschiedene Dokumententypen

HTML 4.01 - Strict, Transitional, Frameset
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
    "http://www.w3.org/TR/html4/frameset.dtd">
XHTML 1.0 - Strict, Transitional, Frameset
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
XHTML 1.1 - DTD
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
    "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
MathML 1.01 - DTD
<!DOCTYPE math SYSTEM "http://www.w3.org/Math/DTD/mathml1/mathml.dtd">
MathML 2.0 - DTD
<!DOCTYPE math PUBLIC "-//W3C//DTD MathML 2.0//EN" "http://www.w3.org/TR/MathML2/dtd/mathml2.dtd">
SVG 1.0 - DTD
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
SVG 1.1 Tiny - DTD
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Tiny//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-tiny.dtd">
SVG 1.1 Basic - DTD
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1 Basic//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11-basic.dtd">
SVG 1.1 Full - DTD
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN"
"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
XHTML + MathML + SVG Profile (XHTML als Host-Sprache) - DTD
<!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN"
"http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">
XHTML + MathML + SVG Profile (Nutzt SVG als Host) - DTD
<!DOCTYPE svg:svg PUBLIC
"-//W3C//DTD XHTML 1.1 plus MathML 2.0 plus SVG 1.1//EN"
"http://www.w3.org/2002/04/xhtml-math-svg/xhtml-math-svg.dtd">

Templates für korrekte XHTML-Dokumente

Entweder ...

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="de">
<head>
   <title>Vorlage für XHTML 1.0 Strict </title>
   <meta http-equiv="Content-Style-Type" content="text/css" />
</head>
<body>
   <p>... Inhalte ...</p>
</body>
</html>

Auch wenn das <!DOCTYPE>-Tag das erste Tag des Dokuments sein soll – vor dem <!DOCTYPE>-Tag kann die XML-Deklaration erscheinen. Diese Zeile gibt die XML-Version und den verwendeten Zeichensatz an. Die XML-Deklaration wird vom W3C empfohlen, ist aber eine freiwillige Leistung. Da sie zu Problemen mit einigen Browsern führen kann, ist es in der Praxis meistens angebracht, wie nicht zu setzen. Internet Explorer fällt in den Quirksmode, wenn der xml-Prolog gesetzt wird und simmuliert wieder seine alten Fehler. 2G i-mode-Handys spielen den XML-Prolog zudem als flachen Text auf dem Display aus.

Oder (wahrscheinlich die bessere Wahl) ...

Wenn die XML-Deklaration nicht gesetzt wird, muss der Dateityp des Dokuments und der verwendete Zeichensatz in einem <meta>-Tag angegeben werden.

<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="de">
<head>
   <title>Vorlage für XHTML 1.0 Strict </title>
   <meta http-equiv="content-type" content="text/html;charset=utf-8" />
   <meta http-equiv="Content-Style-Type" content="text/css" />
</head>
<body>
   <p>… Inhalte …</p>
</body>
</html>

Nur nicht beides setzen: XML-Prolog und <meta>-Tag.

Das W3C empfiehlt zwar application/xhtml+xml als Mime-Type des Dokuments, aber auch hier sieht die Praxis noch anders aus. Mit diesem Mime-Type würde das Dokument tatsächlich als XML-Dokument interpretiert werden ... das schließt ältere Browser aus, die XML nicht unterstützen. Dazu zählt zählt insbesondere Internet Explorer (5/6 Mac/PC). In der Praxis wird text/html bevorzugt eingesetzt, so dass die Seiten von IE interpretiert werden, und was vom W3C durchaus gestatttet wird.

Zum Seitenanfang

   

Galileo Design

Copyright © 2000 - 2010 Media Engineering Alle Rechte vorbehalten
Design + Programmierung Media Engineering Ulrike Häßler 50226 Frechen-Königsdorf • Impressum und Nutzungsbestimmungen