Der Doctype

HTML- und CSS-Versionen

Für HTML und auch CSS gibt es genaue Spezifikationen des W3C. In den Spezifikationen ist beschrieben, wie ein gültiges (valides) HTML-Dokument auszusehen hat und welche Auszeichnungsbefehle darin vorkommen dürfen. Da es verschiedene HTML-Versionen (und auch verschiedene CSS-Versionen) gibt, unterscheiden sich auch die HTML-Elemente, die in einer bestimmten Version verwendet werden dürfen.

HTML 2.0

Die HTML-Version 2.0 wurde im November 1995 vom W3C verabschiedet und gilt heute als der kleinste gemeinsame Nenner. HTML 2.0 wurde allgemein als Enttäuschung empfunden, da insbesondere Netscape in der Entwicklung schon wesentlich weiter war. Der Browser hatte u.a. bereits Frames und Javascript in einem Umfang implementiert, der wesentlich über den Standard hinausging.

HTML 3.2

Die HTML-Version 3.2 wurde Anfang 1997 offizieller Standard. Die Versionsnummer ist dabei recht merkwürdig. Das W3C entwickelte nämlich zunächst unbeeindruckt von den Erfolgen des Netscape-Browsers eine Version 3.0. Die Vorschläge des W3C standen jedoch in krassem Gegensatz zu den Realitäten im WWW.

Die Version 3.2 ist das Ergebnis der völligen Umarbeitung von HTML 3.0. Seit HTML 3.2 sind Tabellen Bestandteil von HTML. Aber Frames haben es - obwohl zu diesem Zeitpunkt recht verbreitet - nicht in diese Version geschafft.

HTML 4.0

Mit der Verabschiedung von HTML 4.0 hat das W3C gezeigt, dass es sich mit den kommerziellen Entwicklungen im WWW auseinandersetzen kann und hat seine Rolle als Standardisierungs-Gremium gefestigt. Strukturierungselemente treten wieder verstärkt in den Vordergrund, und viele Tags bzw. Attribute sind als "deprecated" gekennzeichnet. Auf sie soll zukünftig bei der Erstellung von Web-Seiten verzichtet werden. Dagegen sind ehemals optionale Dinge wie das alt-Attribut bei Bildern zur Pflicht geworden. Gleichzeitig existiert mit CSS ein sehr mächtiges Werkzeug, um das Layout der Seiten flexibel zu gestalten.

HTML 4.01

Im HTML 4.01-Standard, der am 24.12.1999 veröffentlich wurde, hat das W3C einige Fehler der Version HTML 4.0 beseitigt. Die Änderungen und Ergänzungen betreffen sowohl die Dokumente des W3C, die die Spachstandards beschreiben als auch die Sprache HTML an sich.

Um auch bei neuen Web-Projekten bezüglich Einhaltung von Standards auf der sicheren Seite zu sein, sollte HTML 4.01 in der Variante "strict" verwendet werden.

Der DOCTYPE

Was ist der DOCTYPE?

Damit der Browser nun weiß, nach welcher Version er die HTML-Tags in einem Dokument interpretieren soll, nutzt er die sog. DTD (Document Type Definition), die direkt am Anfang des HTML-Codes stehen sollte. Einige der DTDs habe ich nachfolgend aufgelistet.

DTD für HTML 2.0

  <!DOCTYPE html PUBLIC "-//IETF//DTD HTML 2.0//EN"
  

DTD für HTML 3.2

  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
  

DTD für 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">
  

Die Variante "HTML 4.01 strict" enthält nur die HTML-Tags, die nicht als veraltet (deprecated) gelten wie z.B. das font-Element oder bestimmte Attribute. Wenn man auf dieser älteren Elemente nicht verzichten will oder kann, sollte die Transitional-Variante verwendet werden. Die Variante "HTML 4.01 Frameset" ist identisch zu HTML 4.01 Transitional, außer dass für das body-Element das frameset-Element verwendet wird.

DTD für XHTML 1.0 Strict / Transitional / Frameset

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

  <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 4.01 Transitional//EN"
      "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

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

DTD für XHTML 1.1

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

Warum der DOCTYPE angegeben werden sollte

Wie oben bereits erwähnt, erkennt der Browser anhand des Doctypes, nach welcher HTML-Version das Dokument interpretiert werden soll. Je nach Doctype sind die Browser auch toleranter gegenüber Fehlern im HTML-Dokument. Solche Fehler sind z.B. fehlerhafte Verschachtelungen von HTML-Tags, falsche Farbangaben ohne "#", die Verwendung ungültiger Attribute, usw.

Insbesondere der Internet Explorer kann mit der Doctype-Angabe dazu gezwungen werden, im Standard-Compliant Mode zu arbeiten. Die älteren Versionen des IE interpretieren leider das Box-Modell des W3C falsch. Gemäß des W3C-Modells wird die Gesamtbreite einer Box wie folgt berechnet:

   margin-left
+ border-width-left
+ padding-left
+ width
+ padding-right
+ border-width-right
+ margin-right
__________________
= Gesamtbreite

Der Internet Explorer bis zur Version 5.5 für Windows zieht jedoch die Angaben für padding und border von der Breite (width) ab, so dass Boxen im IE schmaler sind als in Browsern, die das Box-Modell korrekt umsetzen. Oder umgekehrt: Wenn ein Entwickler seine Seiten mit dem Internet Explorer testet und sie für gut befindet, sind die Boxen z.B. in Mozilla, Firefox, Opera oder Safari breiter als erwartet.

Der Internet Explorer Version 6 kann durch die Angabe des Doctypes im Standard-Modus arbeiten. In diesem Modus wird das Box-Modell W3C-konform umgesetzt. Fehlt der Doctype, arbeitet er im sogenannten "quirks-Mode" und verhält sich so wie seine Vorgänger-Versionen.