Meta-Elemente
Weiterführende Informationen
Unterschiede zwischen HTML und XHTML
XHTML ist - wie Sie bereits gelesen haben - eine Reformulierung von HTML 4 auf Basis von XML. XHTML-Dokumente können ohne weiteres mit Standard-XML-Werkzeugen betrachtet, bearbeitet und validiert werden. In der deutschen Übersetzung der XHTML-Empfehlung des W3C steht sehr schön:
»Die XHTML-Familie ist der nächste Schritt in der Evolution des Internet. Wenn die Entwickler von Inhalten heute auf XHTML umsteigen, können sie in die XML-Welt mit allen dort gebotenen Vorteilen vordringen und dennoch darauf vertrauen, dass ihr Inhalt vorwärts- und rückwärtskompatibel ist.«
Es gibt mehrere, wesentliche Unterschiede zwischen HTML 4 und XHTML. Die wichtigsten Änderungen stelle ich Ihnen im folgenden vor.
- Wohlgeformtheit
Das bedeutet, dass Elemente sich nicht mehr überkreuzen dürfen. In HTML 4.0 wurde Quelltext wie dieser noch interpretiert:
In XHTML führt diese falsche und auch nicht logische Schreibweise zu einem Fehler.<p>Das letzte Wort ist <b>fett</p></b>
- Kleinschreibung
Alle bisher bekannten Elemente und Attribute müssen klein geschrieben werden. Dies ist notwendig, da in XHTML zwischen Groß- und Kleinschreibung unterschieden wird.
- Erforderliche Schluss-Tags
In HTML 4 war es noch möglich, für Elemente wie zum Beispielp
oderli
kein Schluss-Tag anzugeben. Man sprach davon, dass diese Elemente implizit geschlossen wurden. Dies ist in XHTML nicht mehr erlaubt.
- Attributwerte müssen immer in Anführungszeichen gesetzt werden
Durfte man früher zum Beispielborder=1
schreiben, muss in XHTML jedes Attribut in Anführungszeichen gesetzt werden, man muss alsoborder="1"
schreiben.
- Keine Attributminimierung
In XHTML muss jedes Attribut einen Wert haben. Somit sind Angaben wie<input type="checkbox" checked />
nicht mehr möglich. Es muss in XHTML<input type="checkbox" checked="checked" />
heißen, auch wenn das vielleicht ein wenig merkwürdig aussieht.
- Leere Elemente
Leere Elemente müssen nun entweder ein End-Tag erhalten, also<hr></hr>
, oder sofort geschlossen werden:<hr />
. Das Leerzeichen ist nicht vorgeschrieben, sollte aber aufgrund besserer Kompatibilität zu älteren Browser gesetzt werden.
- Andere Einbindung von Script- und Style-Elementen in den Dateikopf
Der HTML-Parser versucht, Script- und Style-Angaben in XHTML wie Markup zu lesen. Daher muss man derartige Angaben auf folgende Art schützen:<script> <![CDATA[ ... ungeschützter (unescaped) Scriptinhalt ... ]]> </script>
Als ein Beispiel für die Umsetzung eines XHTML-Dokumentes können Sie sich die Seiten dieser Einführung ansehen. Sie sind in XHTML 1.0 Strict verfasst.
- XHTML 1.0 The Extensible HyperText Markup Language (Second Edition)
W3C Recommendation, 26 January 2000, revised 1 August 2002 - XHTML 1.0: Die Extensible HyperText Markup Language (Zweite Auflage)
W3C-Empfehlung, 26. Januar 2000, überarbeitet am 1. August 2002, deutsche Übersetzung von Judith Muhr und Stefan Mintert. - Buchempfehlung: XHTML, CSS und Co. - Die W3C-Spezifikation für das Web-Publishing (Herausgeber Stefan Mintert)
Gebundene Ausgabe, 884 Seiten, Verlag Addison-Wesley, ISBN 3827318726
Probleme mit XHTML
Wenn Sie XHTML-Dokumente schreiben und Ihnen die Endung »html« vergeben, werden Sie zumeist standardmäßig mit dem MIME-Type text/html ausgeliefert und als HTML-Dokumente interpretiert. Wenn Ihre Website zum Beispiel auf einem Apache Webserver gehostet ist, reicht bereits die Zeile
AddType text/html;charset=iso-8859-1 html
in der .htaccess, um MIME-Type (Inhaltstyp) und Zeichensatz explizit zu bestimmen. XHTML als text/html auszuliefern, bringt theoretisch zwar einige Probleme mit sich, in der Praxis jedoch kaum, wie Sie an den Dokumenten dieser Einführung sehen können. Allerdings hat man auch nichts von den Vorteilen, die XHTML mit sich bringt. Eine andere Möglichkeit (eigentlich die »richtige«) ist es daher, XHTML-Dokumente mit dem zugehörigen MIME-Type application/xhtml+xml auszuliefern. Das ist zwar theoretisch korrekt, bringt aber praktische Probleme mit sich. Folgende Seiten geben Ihnen einen Überblick über die Möglichkeiten, die Sie als Webautor zur Zeit haben:
- Was spricht für den Einsatz von XHTML?
- Warum sollte ich XHTML für meine Projekte (noch) nicht benutzen?
- Ist der Umstieg auf XHTML im Moment sinnvoll?
Diese drei im Rahmen der <dciwam/>-FAQ verfassten Artikel von Dominik Boecker und Dirk Steinchen setzen sich kritisch mit der Frage auseinander, ob heute bereits (als "application/xhtml+xml" ausgeliefertes) XHTML verwendet werden soll. - Mit dem Apache XHTML-Seiten ausliefern
Ein sehr lesenswerter Artikel von Christoph Schneegans, in dem unter anderem Content Negotiation erläutert wird, also eine Möglichkeit, XHTML-Dokumente je nach User-Agent als text/html oder application/xhtml+xml auszuliefern.
- Auch die Dokumente dieser Website werden je nach Fähigkeiten des Browsers als text/html oder application/xhtml+xml ausgeliefert. Ich verwende dazu folgende Zeilen PHP-Code, die ich in jedes Dokument inkludiere, um den richtigen MIME-Type zu ermitteln und anzugeben:
if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1' && isset($_SERVER['HTTP_ACCEPT']) && preg_match('|application/xhtml\+xml(?!\s*;\s*q=0)|', $_SERVER['HTTP_ACCEPT'])) { header('Content-Type: application/xhtml+xml; charset=iso-8859-1'); header('Vary: Negotiate,Accept'); } else { header('Content-Type: text/html; charset=iso-8859-1'); header('Vary: Negotiate,Accept'); }