Über mich

Startseite arrow Tipps & Tricks arrow Was ist eigentlich der DocType?

Was ist eigentlich der DocType?

Montag, 1. Dezember 2008
Geschrieben von Armin Vieweg
Durch den letzten Artikel, der sich mit den W3C Normen befasst hat, kam ich nicht umher dieses relativ wichtige und umfangreiche Thema ebenfalls anzuschneiden.

Der DocType ist ein fundamentaler Bestandteil einer jeden Internetseite. Er teilt dem Browser mit, wie er das was danach folgt interpretieren muss.

Eine entsprechende DocType Deklaration sieht z.B. so aus:

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



Wir sehen darin zwei grundlegende Elemente. Zum einen das es sich um "HTML 4.01 Transitional" handelt und das es eine Datei gibt, auf die verwiesen wird: "loose.dtd", die sogenannte DocType-Definition.

Diese Datei definiert den Standard. Darin ist also ganz klar geregelt welche Elemente es gibt, und welche Attribute pro Element zugelassen sind.



Ein Element wäre zum Beispiel das <a>-Tag und ein Attribut (oder Eigenschaft) davon wäre der href oder das target. Eben diese Attribute und auch noch weitere finden wir in der DTD-Datei (auszugsweise):

<!ELEMENT A - - (%inline;)* -(A)       -- anchor -->
<!ATTLIST A
  %attrs;                              -- %coreattrs, %i18n, %events --
  ...
  href        %URI;          #IMPLIED  -- URI for linked resource --
  target      %FrameTarget;  #IMPLIED  -- render in this frame --
  rel         %LinkTypes;    #IMPLIED  -- forward link types --
  ...
  >




DocTypes für Alles
Für jedes Dokumentenformat (DocType), dass wir im Internet nutzen gibt es Definitionen. HTML, XHTML und auch XML sind in ihrer Form und ihrem Umfang voll definiert.

Unterhalb von HTML und XHTML wird nochmal unterschieden zwischen
- Transitional
- Strict
- und Frameset


Das Meistverwendetste dürfte die Transitional Variante sein, bei der alle HTML-Elemente und Tag-Eigenschaften zugelassen sind, die man im Allgemeinen benötigt.

Strict ist da schon etwas anders. Hier ist z.B. kein target im Link (<a>) zugelassen. Man darf also laut Definition kein neues Fenster aufgehen lassen.

Auf den Seiten der w3schools findet man alle HTML-Elemente und sieht welche Eigenschaften in welcher Variation (strict oder transitional) erlaubt sind.



XHTML und HTML, wo ist eigentlich der Unterschied?
Strict, Transitional und Frameset gibt es sowohl für HTML, als auch für XHTML. Man fragt sich sicher, wo denn darin der Unterschied ist, außer das der DocType-Aufruf anders aussieht.

Also zum einen ist XHTML jünger als HTML und unterscheidet sich im wesentlichen darin, dass die XML-Syntax etwas mehr durchgezogen wird.

XML ist bekanntlich ein weiterer Standard. Dort ist z.B. definiert, dass alle geöffneten Tags auch wieder geschlossen werden müssen. Das ist HTML nicht der Fall.

Alle HTML-Elemente die keinen "Text" zwischen geöffnetem und geschlossenen Tag beinhalten sind davon betroffen.

Beispiel eines normalen HTML-Elements:

<a href="seite.html">Dies ist der Text von diesem Element!</a>



Beispiel eines HTML-Elements ohne "Text":

<img src="bild.jpg" alt="Bild">



In dem Bild-Tag (img) gibt es kein schließendes </img> Tag. Das steht allerdings in Konflikt mit XML. Um das HTML in seinem Standard nun dem von XML anzupassen hat man als Brücke XHTML geschaffen.

Dort müssen solche Bildelemente geschlossen werden. Man muss es jedoch nicht mit </img> machen sondern kann eine neue Syntax verwenden dafür, die so aussieht:

<img src="bild.jpg" alt="Bild" />



So werden jetzt in HTML und auch in XML leere Elemente abgebildet. <element /> vereint praktisch ein öffnendes und schließendes Tag.

Ähnlich sieht es bei Elementen im Head aus wie <link> oder auch <input> Felder. Alle diese Elemente verfügen über keinen "Text" zwischen öffnenden und schließendem Tag.


Alle DocTypes in der Übersicht
HTML Transitional

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



HTML Strict

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



HTML Frameset

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




XHTML Transitional

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



XHTML Strict

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">



XHTML Frameset

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
     "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">




Warum braucht man den DocType?
Der DocType dient dazu dem Browser mitzuteilen, welcher Standard jetzt folgt. Die meisten Browser erkennen dies auch so, anhand des Quellcodes, allerdings Browser wie der Internet Explorer interpretieren Internetseiten teilweise falsch, wenn der DocType fehlt.

Man kann den DocType auch ohne Angabe des DTD verwenden, weil die meisten Browser diese Deklarationen schon "an Bord" haben. Der Internet Explorer 6 und 7 aber z.B. interpretieren Seiten anders, wenn diese DTD-Datei nicht verlinkt ist.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">



Von daher empfiehlt es sich, stets den kompletten DocType anzugeben.



Quirksmode
Hat man keinen DocType angegeben und verstößt somit gegen die Standards befinden sich die Browser in einem sogenannten "Quirksmode". Mit Eigenart oder Macke kann man das englische Wort "Quirk" übersetzen und bedeutet, dass alte Fehler simuliert werden um die Kompatibilität zu gewährleisten.

Aber mal ehrlich, wer will schon mit "simulierten" Fehlern arbeiten, vorallem bei einem komplett neuen Projekt?

Ob eine Seite im Standardkonformen- oder im Quicks-Modus ist, kann man z.B. in Firefox unter den "Seiteninformationen" einsehen, die man über Rechtsklick erreicht.

Im Quirksmode sind übrigens zu allem Überfluss teilweise JavaScript Befehle nicht verfügbar.


Links

HTML DOCTYPE TAG - w3schools





  Kommentare (2)
 1 Geschrieben von: Mike, am 27.06.2010 um 11:24
Bei HTML5 soll der Doctype einfach lauten, das lässt sich viel einfacher merken.
 2 Geschrieben von: Mike, am 27.06.2010 um 11:32
Der Doctype-Tag wurde anscheinend gelöscht. !DOCTYPE HTML (mit Klammern)
Letzte Aktualisierung ( Montag, 1. Dezember 2008 )
 
< Zurück   Weiter >