Während HTML als dominierende Markupsprache für Webdokumente eine Anwendung bzw. Spezifizierung der Meta-Auszeichnungssprache SGML ist, stellt XHTML eine Familie von Dokumenttypen und Modulen dar, die HTML auf der Basis und unter den Bedingungen von XML reformulieren und erweitern. Die Metasprache XML selbst wurde als ein Mittel konzipiert, mit dem zwar der Umfang und die Komplexität von SGML reduziert, ineins damit aber deren Reichtum und Flexibilität bewahrt werden sollten. Wenn XML damit als vereinfachte Form oder Untermenge von SGML erscheint, ist diese Sprache zur Beschreibung von Markupsprachen doch zugleich strikter und eindeutiger als SGML formuliert, wovon denn auch XHTML als vom W3-Konsortium propagierter neuer Webstandard profitiert.
Die Vorteile, die Webarbeiter-inne-n aus der Umstellung auf XHTML gewinnen können, werden vom W3-Konsortium insbesondere auf vier Feldern angesiedelt. Erstens lassen sich XHTML-Dokumente durch ihre XML-Konformität aus dem Stand mit gängigen XML-Werkzeugen edieren und validieren. Zweitens können XHTML-Dokumente so geschrieben werden, dass sie nicht nur in neueren XHTML-konformen Browsern und User Agents, sondern auch in denen des alten HTML4-Standards zu einer verbesserten (oder mindestens gleichwertigen) Operabilität beitragen. Drittens sind XHTML-Dokumente befähigt, Anwendungen (d.h. Skripte oder Applets), die auf dem HTML- oder XML-Document-Object-Modell beruhen, effektiver zu unterstützen. Und viertens ergibt sich durch die Evolution der XHTML-Familie eine größere Wahrscheinlichkeit, dass XHTML-konforme Dokumente in verschiedenen XHTML-Umgebungen einsetzbar bleiben. Der Umstieg auf XHTML, der den fürs Web Arbeitenden den Zugang zur XML-Welt eröffnet, erhöht damit zugleich die Zukunftstauglichkeit der unter diesem Signum geschriebenen Dokumente, ohne dass die Bindung an vergangene Inhalte vollständig aufgegeben werden müsste.
Generell gesprochen bietet die XHTML-Familie, da XML-basiert und damit grundsätzlich erweiterbar konzipiert, die Möglichkeit, neuen Markup-Ideen mit der Realisierung neuer Elemente und Elementattribute in bestehenden und noch zu schaffenden Modulen zu begegnen. Daher werden künftige Entwicklungen von XHTML auch konsequent dem Prinzip der Modularisierung folgen. Zudem bringt es das XML-Konzept der Namespaces mit sich, dass in einem XHTML-Dokument verschiedene Markupsprachen – aktuelle Beispiele wären MathML, SVG und RDF – kombiniert werden können, sofern die User Agents hier mitspielen (was im Moment noch sehr eingeschränkt der Fall ist). Im Übrigen ist die XHTML-Familie so entworfen, dass User Agents aller Art (also nicht nur die bekannten Browser, sondern z.B. auch Screenreader oder mobile Geräte) in ihr eine interoperable Grundlage finden sollen. Wie die Realisierung im Einzelnen ablaufen wird, ist allerdings noch offen und einigermaßen umstritten, der Geist aber ist immerhin schon der Flasche entwichen.
Erwähnt sei noch, dass auch jetzt schon einige ganz pragmatische Gründe die Verwendung von XHTML als Markupsprache nahe legen. So ist XHTML strikter und konsistenter ausgelegt als HTML, was Markupfehler vermeiden hilft, zumal dadurch die Validierung der Dokumente deutlich erleichtert wird. Dann reagieren moderne Browser durchaus vorteilhaft auf in XHTML geschriebene und auch so deklarierte Dokumente, die Darstellung im Browser wird damit ein Stück voraussehbarer. Und nicht zuletzt kann die in XHTML ohnehin geforderte Trennung von Struktur und Layout, zusammen mit der Vermeidung präsentationalen Markups, einen bewussteren, semantisch unterfütterten Schreibstil von Webinhalten voran bringen bzw. unterstützen.
Analog zu HTML 4.01, der letzten verabschiedeten HTML-Spezifikation, ist auch XHTML 1.0 in drei verschiedene Dokumenttyp-Varianten unterteilt: Transitional, Strict und Frameset. Dabei weist der Typ »Transitional« – den Typ »Frameset« lasse ich an dieser Stelle noch außen vor – die stärkste Bindung an das gewohnte HTML-Vokabular auf, der Typ »Strict« hingegen entledigt sich entschieden aller als »deprecated« eingestuften Elemente und verbietet zudem bestimmte Techniken aus der HTML-Vergangenheit. Dieser Zug wird dann übrigens in XHTML 1.1 noch weiter getrieben, aber damit wäre ein neues Kapitel aufgetan. Wenn ich in dieser Webübung die Variante »Strict« favorisiere, dann deswegen, weil über sie die stärkste Vorwärtskompatibilität erreicht werden kann; zudem wird durch ihre Verwendung der sanfte Zwang ausgeübt, von Anfang an mit einer klaren Trennung von Struktur und Präsentation zu operieren – eine Voraussetzung, die bereits im Schreiben des Markups selbst und nicht erst im Verwenden von Stylesheets zum Tragen kommt.
Damit ein Dokument XHTML-konform genannt werden kann, müssen zunächst
einige Grundbedingungen erfüllt sein: das Dokument muss die Grenzen, die
in den drei DTD’s gesetzt sind,
einhalten (1); als Wurzelelement ist <html>
zu verwenden (2);
das Wurzelelement muss eine <xmlns>
-Deklaration für den
XHTML-Namespace enthalten (3); dem Wurzelelement muss eine DOCTYPE-Deklaration,
in der eine der drei DTD’s referenziert wird, vorgeschaltet sein (4); die Teilmenge
einer DTD darf nicht dazu verwendet werden, Parameter-Entities der DTD zu
überschreiben (5). Außerdem wird Webautor-inn-en dringend empfohlen,
XML-Deklarationen in ihre Dokumente aufzunehmen, wenngleich dies nicht zwingend
erforderlich ist. Eine solche XML-Deklaration, die an erster Stelle vor der
DOCTYPE-Deklaration zu stehen hat, folgt einer Konvention dieser Art:
<?xml version="1.0" encoding="utf-8"?>
Die Unterschiede zwischen HTML und XHTML werden vom W3-Konsortium in 12 Punkten aufgelistet und kurz erläutert. Meine Übersicht schließt sich der dort gegebenen Reihung an.
<style type="text/css">
<![CDATA[
…nicht-maskierter Inhalt…
]]>
</style>
Als Alternative hierzu empfiehlt es sich, externe Skript- und Styledateien
zu verwenden.<a>
in <a>
, <label>
in <label>
oder <textarea>
in <button>
);
Ausschlüsse dieser Art sind in einem kurzen Anhang zur XHTML-Empfehlung
gelistet.name
wird in XHTML
generell durch den Fragmentbezeichner id
ersetzt. Aus Gründen
der Abwärtskompatibilität wird id
in XHTML meist mit
einem name
-Attribut gleichen Inhalts ergänzt, formal gilt
name
aber als »deprecated«. Im Übrigen darf in
XHTML der Fragmentbezeichner id
nur ein einziges Mal pro Element
vergeben werden.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<!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">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
[…Kopf- und Inhaltsteil…]
</html>
<head>
<title></title>
<meta http-equiv="Content-Type" content="application/xhtml+xml;
charset=utf-8" />
</head>
<head>
<title></title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<link rel="stylesheet" type="text/css" media="screen" href="layout.css" />
<body>
[…Inhalt…]
</body>