Unterschied HTML und XHTML
Was ist XHTML und warum es verwenden?
Das World Wide Web Konsortium (W3C) definiert die XHTML wie folgt: "Eine Neuformulierung der HTML 4.0 Spezifikation als XML 1.0 Applikation". Ich hingegen bezeichne sie als gute Neuigkeiten für Webseiten Autoren. Mit zunehmendem Wachstum des Internets, werden immer mehr Unternehmen mit neuen Internet Programmen auf den Markt kommen. Es ist höchstwahrscheinlich, dass in naher Zukunft etwas vollkommen anderes die heutigen Browser ersetzen wird und Sie möchten doch sichergehen, dass man bis dahin Ihre Seiten lesen kann. Genau dies soll Ihnen XHTML ermöglichen. Durch die Einhaltung bestimmter Regeln zum Erstellen Ihres Dokuments soll dies erreicht werden.
Vielleicht haben Sie bereits von XHTML gehört und kennen Aussage wie die, dass man kein HTML mehr verwenden solle, sondern nur noch XHTML. In diesem Zusammenhang sollten Sie ein paar grundsätzliche Hintergründe kennen.
HTML ist ein wohldefinierter Standard. Die Regeln für korrektes HTML werden jedoch nicht mithilfe natürlicher Sprache, sondern in einer ebenfalls computerlesbaren Meta-Sprache namens SGML (Structured Generalized Markup Language) formuliert. Die Computerlesbarkeit ist wichtig, damit z.B. ein Programm eine in HTML geschriebene Webseite gegen die in SGML formulierten HTML-Regeln auf syntaktische Korrektheit testen kann. Diesen Vorgang nennt man Validierung (Gültigkeitsüberprüfung).
SGML ist sehr leistungsfähig, aber auch recht komplex und für viele praktische Anwendungsfälle überdimensioniert. Als praxisnähere Alternative zu SGML hat sich mittlerweile XML (Extensible Markup Language) etabliert. XML ist wie SGML eine computerlesbare Meta-Sprache zum Formulieren der Regeln von Markup-Sprachen wie HTML.
XHTML (Version 1.0) ist zunächst einmal nichts anderes als eine Neuformulierung der Sprachregeln von HTML (Version 4.01) in XML.
Mit XHTML 1.0 können Sie also nicht mehr und nicht weniger und nichts anderes tun als mit der aktuellen HTML-Version 4.01: nämlich die Inhalte Ihrer Webseiten strukturieren. Es gibt in diesem Stadium von XHTML auch keine wesentlich anderen Sprachbestandteile als in HTML. Da allerdings die Markup-Regeln von XML etwas anders aussehen als die von SGML, gibt es einige syntaktische Abweichungen und Besonderheiten.
Der <doctype>-Kennzeichner
Erinnern wir uns, dass alle HTML-Seiten bestimmte Elemente, sowie abschließende Tags enthalten müssen.
XHTML hingegen, muss ein weiteres Element enthalten: den
<doctype>
-Kennzeichner.
Dieser Befehl identifiziert den Typ des HTML-Dokuments, den Sie erstellen wollen: Transitional-, Strict- oder Frameset-Dokument.
- Verwenden Sie die Transitional-Version des
<doctype>
-Tag, wenn Ihr Dokument ein Style Sheet zur Definition von Formateigenschaften einzelner HTML-Tags verwendet, welches zum größten Teil die Formatierung des Dokuments übernimmt, aber auch einige HTML-Formatierungs-Attribute enthält, die den älteren Browsern ermöglichen, das Dokument aufzuzeigen.
- Verwenden sie die Strict-Version des
<doctype>
-Tag, wenn Ihr Dokument ein Style Sheet verwendet, das die gesamte Formatierung ihres Dokuments übernimmt. Nur CSS-fähige Browser, sind in der Lage, diese Art Dokument anzuzeigen.
- Verwenden Sie die Frameset-Version des
<doctype>
-Tag, wenn Ihr Dokument mehrere Frames (Anzeigesegmente) verwendet.
Interpretation von HTML und XHTML
Ein Parser leistet die Verarbeitung von Markup-Sprachen entsprechend der Regeln der Markup-Sprache. Jeder Browser, der eine Webseite am Bildschirm anzeigt, muss deren HTML-Quelltext parsen. Aus dem Markup geht hervor, aus welchen Elementen die Webseite besteht und welche Elemente innerhalb welcher anderer Elemente vorkommen. So kann beispielsweise ein einzelnes Wort wie "Mensch" Inhalt einer Kopfzelle einer Tabelle sein, die sich in einem bestimmten Bereich innerhalb des Dateikörpers befindet.
Zum Verarbeiten von HTML verfügt jeder Browser über einen HTML-Parser. Bei XHTML ist die Angelegenheit etwas komplizierter: Wenn das HTML-Dokument vom Browser als HTML akzeptiert wird, verwendet der Browser seinen HTML-Parser. Wird es jedoch als XML-Dokument akzeptiert, so wird der XML-Parser verwendet, sofern der Browser über einen entsprechenden Parser verfügt. In der Darstellung kann dies erhebliche Auswirkungen haben. So stellen einige Browser XML-geparste Dokumente nur als Markup-Strukturbaum dar, also letztlich als eine sauber formatierte Quelltextansicht. Andere bieten XML-geparste Dokumente möglicherweise nur zum Download an und stellen gar nichts dar.
Ob ein Browser bei einem XHTML-Dokument den HTML-Parser oder den XML-Parser verwendet, hängt in erster Linie vom zugewiesenen Mime-Type ab.
Der Mime-Type legt den Datentyp fest. Jeder Browser hat lokal eine eigene Liste von Mime-Typen gespeichert, mit deren Hilfe er z.B. Dateiendungen und Datentypen zuordnen kann. Beim Safari ist diese Liste eng verzahnt mit den Dateiendungsverknüpfungen des Betriebssystems. Wird eine beliebige Datei im Browser lokal geöffnet, kann dieser an Hand seiner Mime-Type-Liste entscheiden, wie er mit der Datei verfahren soll. Anders sieht es aus, wenn der Browser Daten von einem Webserver anfordert und empfängt. In diesem Fall übermittelt der Webserver Kopfdaten an den Browser, in denen unter anderem eine Angabe zum Mime-Type der übertragenen Daten stehen kann, die dem Browser zur Orientierung dient.
Für HTML-Dokumente lautet der Mime-Type text/html
. Für XHTML sollte jedoch laut Spezifikation nicht dieser Mime-Type verwendet werden, sondern application/xhtml+xml
. Alternativ dazu sind auch die Angaben text/xml
und application/xml
möglich. Dies führt jedoch je nach Server- und Browser-Einstellungen zu Problemen. Der immer noch am weitesten verbreitete MS Internet Explorer kann mit dem Mime-Type application/xhtml+xml
sogar bei angepasster Server-Konfiguration nichts anfangen und bietet ein Dokument mit diesem Mime-Type zum Download an. Daher wird in der Praxis doch noch der Mime-Type text/html
verwendet.
Wenn Sie sichergehen wollen, dass Ihre XHTML-Seiten als Webseiten im Browser erscheinen, dann weisen Sie statischen XHTML-Dateien am besten ebenso wie HTML-Dateien die Dateiendung .htm oder .html zu.
Die HTML-Syntax
HTML ist eine Auszeichnungssprache, die sehr fehlertolerant ist.
Sie kann zum Beispiel erkennen, dass Sie vergessen haben, ein HTML-Tag des Typs <li>
innerhalb einer nummerierten Liste (<ol>
) zu schließen. Sobald Sie aber das nächste <li>
-Tag eingeben, schließt HTML das vorher gegebene Tag automatisch ab.
Für HTML repräsentiert das folgende Beispiel (mit der korrekten Syntax)
das gleiche wie
und
Für XHTML hingegen sind all diese Beispiele unterschiedlich. Im nachstehenden Text werden Sie herausfinden, warum:
Tags und Attribute sollten Sie nur klein schreiben
- In XHTML sind
<li>
,<li>
und<li>
unterschiedliche Tags, die unterschiedlich behandelt werden müssen. Um Probleme mit Anwendungprogrammen, die XHTML-Dateien verarbeiten, zu vermeiden, sollten Sie deshalb alle HTML-Tags klein schreiben.
Setzen Sie Attributwerte in Anführungszeichen
- Achten Sie darauf, dass alle Ihre Attributwerte in Anführungszeichen gesetzt werden. Die Anführungszeichen helfen dem Browser zu erkennen, dass es sich um den Wert eines Attributes handelt und nicht um einen Befehl.
Schließen Sie sämtliche nicht leere Elemente ab
- Wie schon oben erwähnt, kann es vorkommen, dass Sie in der HTML vergessen ein Tag abzuschließen, aber der Browser trotzdem in der Lage ist, Ihr Dokument korrekt anzuzeigen. XHTML hingegen verlangt, dass sämtliche Tags abgeschlossen werden. Wie aber beenden Sie
<br />
- (Zeilenumbruch) und<hr />
-Tags (horizontale Linie), die keinen schließenden Steuerbefehl haben? Wie das folgende Beispiel aufzeigen wird, genügt es hier, einen Schrägstrich (/
) in das Tag miteinzubeziehen:<!DOCTYPE html PUBLIC ...
Verwenden Sie verschachtelte Tags und überlappen Sie diese nicht. In den folgenden zwei Beispielen werden Sie erkennen, dass für HTML kein Unterschied besteht, für XHTML aber sehr wohl. XHTML verlangt das Schließen von verschachtelten Tags und zwar in der Reihenfolge, in der sie geöffnet wurden. Das erste Beispiel entspricht der richtig verwendeten Syntax, das zweite Beispiel zeigt die falsche Syntax.
Argumente für XHTML
Bei neu zu erstellenden Webseiten sprechen durchaus einige Gründe dafür, von eher ein XHTML statt "herkömmlichem" HTML zu verwenden. Diese Gründe hängen letztlich alle mit der Integration von XHTML in der XML-Welt zusammen:
Kombination mit anderen XML-Sprachen:
- In einem XHTML-Dokument können Sie beispielsweise direkt mathematisch/naturwissenschaftliche Formeln in MathML oder Vektorgrafiken in SVG notieren. Der Grund ist, dass in XML-basierende Dokumente, zu denen XHTML-Dokumente ja gehören, Daten aus beliebigen anderen XML-basierenden Sprachen eingebettet werden können.
Konvertierung in andere XML-Sprachen oder Ausgabeformate:
- Mithilfe von XSLT, einer standardisierten, XML-basierten Markup-Sprache zum Übertragen von Inhalten aus XML-basierten Sprachen in andere XML-basierten Sprachen oder beliebige andere Ausgabeformate ist XHTML optimal für die Konvertierung in andere Ausgabeformate gerüstet. Dies ist beispielsweise für Inhalte sinnvoll, die nicht nur als Webseite, sondern z.B. auch als Print-Dokument veröffentlicht werden sollen.
Zukunftssicherheit:
- Die Spezifikation zu XHTML wird in jedem Fall weiterentwickelt. So ist XHTML 2.0 bereits in Entwicklung. Eine parallele Weiterentwicklung von herkömmlichem HTML ist dagegen nicht vorgesehen. Zwar ist XHTML 2.0 für die aktuelle Praxis noch irrelevant, doch kann sich dies in wenigen Jahren ändern. Eine Konvertierung von XHTML-1.0-Dokumenten nach XHTML 2.0 ist vermutlich unproblematischer zu bewerkstelligen als eine Konvertierung von herkömmlichem HTML 4.01 auf XHTML 2.0.
Andererseits ist sauberes HTML auch nicht zwangsläufig schlechter konvertierbar als sauberes XHTML. Die Einbettung anderer XML-Formate ist ebenfalls nur schöne Theorie, die in den heutigen Browsern höchstens ansatzweise funktioniert. So betrachtet spricht aus praktischer Sicht nichts gegen die Verwendung von HTML.