Wie bereits an mehreren Stellen angesprochen, unter anderem in Kapitel 2.6.3, in dem es um die Frage geht, weshalb Webautoren XHTML 1.0 einsetzen sollten und nicht HTML 4.01, unterscheiden sich HTML und XHTML nur in wenigen Punkten. Nahezu alle Unterschiede zwischen HTML und XHTML resultieren aus der Tatsache, dass HTML ein SGML-Dokumenttyp ist, während XHTML der strengeren XML-Syntax folgt. Es ist nicht das Ziel dieser Einführung, Sie im Detail mit HTML vertraut zu machen. Jedoch sollten Sie einen Blick auf die in der XHTML-Empfehlung aufgeführten HTML-Kompatibilitätsrichtlinien werfen, die es Ihnen ermöglichen, XHTML-Dokumente so zu verfassen, dass heutige HTML-Benutzerprogramme und -browser sie ohne Probleme anzeigen können. Dieser Abschnitt stellt die wichtigsten Regeln vor.
- Fügen Sie ein Leerzeichen vor dem abschließenden
/>
bei Leeres-Element-Tags ein. - Schreiben Sie
<br />
und nicht<br/>
. Auch auf die zugelassene, aber unübliche Form<br></br>
sollten Sie verzichten. Sie könnten sonst Schwierigkeiten bei der Darstellung in älteren Browsern bekommen. - Fassen Sie Start- und End-Tag von Elementen ohne Inhalt nicht zusammen.
- Elemente, die eigentlich mit Start- und End-Tag notiert werden, dürfen
– wenn sie keinen Inhalt haben – in XML mit einem
Leeres-Element-Tag notiert werden. Dies bezeichnet man als
Elementminimierung. Davon sollten Sie jedoch Abstand nehmen.
Falls es einen guten Grund gibt, ein Element ohne Inhalt zu
notieren, schreiben Sie zum Beispiel
<div></div>
, aber niemals<div />
. - Notieren Sie den Inhalt von
script
- undstyle
-Elementen innerhalb von CDATA-Abschnitten -
In XHTML-Dokumenten werden die Inhalte des
script
- und desstyle
-Elements (siehe Kapitel 5.11.3 und Kapitel 6.3.2) anders behandelt als in HTML. Dort ist es so, dass der Inhalt desscript
-Elements nicht geparst wird, das heißt, (X)HTML-Markup-Zeichen wie<
oder&
(siehe Kapitel 4.1.4 »Zeichenreferenzen«) innerhalb eines Scripts sind unkritisch. In XHTML ist das anders. Wenn Sie derartige Zeichen verwenden, werden diese als XHTML interpretiert – in den meisten Fällen wird Ihr Dokument dadurch ungültig. Um dies zu verhindern, müssen Sie diese Zeichen als Zeichenreferenz notieren, dann funktioniert allerdings häufig das Script nicht mehr. Um das Problem zu lösen, schließen Sie den Inhalt desscript
-Elements in einen sogenannten CDATA-Abschnitt ein. Dadurch teilen Sie dem Parser mit, dass kein Markup folgt, sondern normaler Text.CDATA-Abschnitte beginnen mit
<![CDATA[
und enden mit]]>
. Leider gibt es Browser, die diese Zeichenketten dann als JavaScript-Code oder CSS zu interpretieren versuchen. Daher ist es gängige Praxis, sie durch entsprechende Kommentare zu umschließen; sowohl bei JavaScript als auch bei CSS werden diese mit/*
eingeleitet und mit*/
beendet.<style type="text/css"> /* <![CDATA[ */ ... ungeschützter (unescaped) Inhalt ... /* ]]> */ </style>
CDATA-Abschnitte werden vom XML-Prozessor erkannt und erscheinen als Knoten im Dokumentstammbaum.
- Verwenden Sie sowohl das Attribut
lang
als auch das Attributxml:lang
zur Festlegung der Sprache eines Elements oder Attributs. - Liefern Sie XHTML-Dokumente mit dem MIME-Typ
text/html
aus. -
Das W3C sieht für XHTML-Dokumente den MIME-Typ
application/xhtml+xml
vor. Leider verstehen nicht alle Browser diesen MIME-Typ, allen voran der Internet Explorer, der auf diese Art ausgelieferte Ressourcen zum Download anbietet, anstatt sie im Browserfenster anzuzeigen. Die einfachste Lösung besteht darin, XHTML-Dokumente wie HTML-Dokumente alstext/html
auszuliefern. Dies ist für XHTML 1.0-Dokumente, die den Kompatibilitätsrichtlinien genügen, zulässig und unproblematisch. Leider entgehen Ihnen damit die Vorteile, die XHTML mit sich bringt; das Dokument wird nicht durch einen XML-Parser behandelt, sondern durch den gewöhnlichen HTML- beziehungsweise SGML-Parser gejagt.Es gibt unterschiedliche Methoden, die es ermöglichen, XHTML-Dokumente je nach Fähigkeiten des Browsers als
text/html
oderapplication/xhtml+xml
auszuliefern. Versteht ein Browser den XHTML-MIME-Typ, wird das Dokument mit diesem ausgeliefert, ansonsten mittext/html
. Verschiedene Methoden schildert Christoph Schneegans in seinem Artikel XHTML-Einmaleins.