XHTML
XHTML reformulierte HTML 4 als striktes XML. Lernen Sie Wohlgeformtheitsregeln, Doctypes und xmlns, und warum HTML5 es weitgehend abgelöst hat.
XHTML (Extensible HyperText Markup Language) ist eine um das Jahr 2000 entstandene Neuformulierung von HTML 4.01 als strikte XML-Anwendung, veröffentlicht vom World Wide Web Consortium (W3C). Es verwendet dasselbe Vokabular an Tags wie HTML, erzwingt jedoch die XML-Wohlgeformtheitsregeln: Jedes Tag muss geschlossen, in Kleinbuchstaben und korrekt verschachtelt sein.
Für neue Projekte empfiehlt sich HTML5. XHTML 1.0 wurde weitgehend durch HTML5 abgelöst, das die Wohlgeformtheitsdisziplin als optionalen Polyglot-Stil beibehält und dabei deutlich nachsichtiger und funktionsreicher ist. Diese Seite dient am besten als Hintergrundwissen über einen veralteten Standard, dem Sie in älteren Codebasen noch begegnen können.
Das ursprüngliche Ziel war es, Dokumente strenger und vorhersehbarer zu gestalten, damit sie von jedem Standard-XML-Prozessor geparst und in einer Vielzahl von Geräten und Werkzeugen wiederverwendet werden können. Da die Regeln unnachgiebig sind, konnte ein einziges fehlendes schließendes Tag das gesamte Dokument beim Ausliefern als echtes XML am Rendern hindern.
Wohlgeformtheitsregeln
Der entscheidende Unterschied zwischen HTML und XHTML besteht darin, dass XHTML wohlgeformtes XML sein muss. Im Folgenden sind die Regeln aufgeführt, jeweils mit einem falschen und einem richtigen Beispiel.
Dokumentstruktur und Doctype
Jedes XHTML-Dokument muss mit einem XHTML-<!DOCTYPE> beginnen und die Elemente <html>, <head>, <title> und <body> enthalten. Das <html>-Element muss außerdem den XML-Namensraum mit dem Attribut xmlns deklarieren.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Title of the document</title>
</head>
<body>
Content of the page
</body>
</html>Das xmlns-Attribut
xmlns="http://www.w3.org/1999/xhtml" ist die XML-Namensraumdeklaration. Sie teilt einem XML-Parser mit, dass die Elemente im Dokument zum XHTML-Vokabular gehören und nicht zu einer anderen XML-Sprache. Sie ist auf dem Wurzelelement <html> jedes XHTML-Dokuments erforderlich. Die URL ist ein Bezeichner und kein Link, den der Browser abruft.
XHTML-Doctype-Varianten
XHTML 1.0 definiert drei DOCTYPEs, die jeweils auf eine andere DTD verweisen. Das obige Beispiel verwendet Transitional, die häufigste Wahl.
- Strict — sauberes, präsentationsfreies Markup. Veraltete Präsentationselemente und -attribute (wie
fontoderbgcolor) sind nicht erlaubt; das Styling bleibt CSS überlassen. - Transitional — erlaubt die veralteten Präsentationsmerkmale für die Kompatibilität mit älteren Inhalten.
- Frameset — wie Transitional, erlaubt aber
<frameset>-Dokumente, die das Fenster in Frames aufteilen.
Jedes Element schließen
In HTML können einige schließende Tags weggelassen werden, aber in XHTML muss jedes Element geschlossen werden. Void-Elemente ohne Inhalt (wie br, hr, img) schließen sich selbst mit einem abschließenden Schrägstrich.
<!-- Wrong (HTML-style, not closed) -->
A break: <br>
An image: <img src="smile.gif" alt="Always smile">
<!-- Right (self-closed for XHTML) -->
A break: <br />
An image: <img src="smile.gif" alt="Always smile" />Tag- und Attributnamen in Kleinbuchstaben
XML unterscheidet Groß- und Kleinschreibung, daher sind <P> und <p> verschiedene Tags. XHTML verlangt alle Element- und Attributnamen in Kleinbuchstaben.
<!-- Wrong -->
<BODY>
<P>Some paragraph</P>
</BODY>
<!-- Right -->
<body>
<p>Some paragraph</p>
</body>Jeden Attributwert in Anführungszeichen setzen
Alle Attributwerte müssen in Anführungszeichen eingeschlossen sein, auch numerische.
<!-- Wrong -->
<table width=100%>
<!-- Right -->
<table width="100%">Elemente korrekt verschachteln
Überlappende Tags sind verboten; innere Elemente müssen vor ihrem äußeren Elternelement geschlossen werden.
<!-- Wrong (overlapping) -->
<strong><em>This text is bold and italic</strong></em>
<!-- Right (properly nested) -->
<strong><em>This text is bold and italic</em></strong>Keine Attributminimierung
In HTML können boolean-Attribute alleine stehen (checked). XHTML verbietet diese Kurzschreibweise: Jedes Attribut benötigt einen Wert, und bei boolean-Attributen wiederholt der Wert den Namen.
<!-- Wrong (minimized) -->
<input type="checkbox" name="flower" value="rose" checked />
<!-- Right -->
<input type="checkbox" name="flower" value="rose" checked="checked" />id statt name bevorzugen
In XHTML ist das Attribut name bei Elementen wie Ankern veraltet, daher wird das Attribut id zur Identifizierung von Elementen empfohlen.
Vorteile von XHTML
- Alle Tags müssen geschlossen und korrekt verschachtelt sein, was das Markup konsistent und leichter lesbar hält.
- Als wohlgeformtes XML konnten Dokumente zuverlässig von generischen XML-Werkzeugen verarbeitet und in spezialisierte Umgebungen wie Braille-Lesegeräte und andere Hilfssoftware übertragen werden.
- Es fördert eine saubere Trennung von Struktur und Präsentation und arbeitet zusammen mit CSS für das Styling.
XHTML vs. HTML
Einige wesentliche Unterschiede zwischen den beiden:
- Zugrunde liegender Standard. HTML ist eine SGML-Anwendung; XHTML ist eine XML-Anwendung.
- Herkunft. HTML stammt von SGML ab; XHTML leitet sich sowohl von XML als auch von HTML 4 ab.
- Geschichte. HTML wurde von Tim Berners-Lee in den frühen 1990er Jahren begründet (Wikipedia); XHTML 1.0 wurde im Jahr 2000 zur W3C-Empfehlung (Wikipedia).
- Parsing. HTML verwendet einen nachsichtigen, fehlertoleranten Parser; XHTML, das als XML ausgeliefert wird, erfordert einen strikten XML-Parser, der fehlerhafte Dokumente ablehnt.
XHTML vs. HTML5
- Groß- und Kleinschreibung. XHTML unterscheidet Groß- und Kleinschreibung; HTML5 (wie klassisches HTML) nicht.
- Doctype. XHTML-Doctypes sind lang und verweisen auf eine DTD; HTML5 verwendet das kurze
<!DOCTYPE html>. - MIME-Typ. HTML5 wird als
text/htmlausgeliefert; striktes XHTML-Parsing erfordertapplication/xhtml+xml. - Toleranz. HTML5 erholt sich problemlos von vielen Markup-Fehlern, während XHTML diese ablehnt.
- Status. HTML5 ist der moderne Standard für alle Geräte; XHTML 1.0 gilt inzwischen als veraltet.