Grundlagen der Webpublikation, Begleittext 3: Zur Struktur und Terminologie von (X)HTML-Dokumenten

1HTML und XHTML

1.1Begründung von XHTML

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.

1.2Unterschiede zwischen HTML und XHTML

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.

Liste der Differenzen von XHTML zu HTML 4

  • Dokumente müssen wohlgeformt sein, d.h. die zum Einsatz kommenden Elemente müssen mit schließenden Tags versehen oder in einer besonderen Form geschrieben sein, zudem sind alle Elemente korrekt zu verschachteln.
  • Element- und Attributnamen sind klein zu schreiben, da XML nach Groß- und Kleinschreibung unterscheidet.
  • Elemente, die in HTML keine Endtags erfordern, müssen in XHTML mit Endtags versehen werden.
  • Attributwerte sind zwingend in Anführungszeichen zu setzen.
  • Attributminimierung ist nicht mehr erlaubt, d.h. Attribut-Wert-Paare müssen immer voll ausgeschrieben werden.
  • Leere Elemente müssen entweder ein Endtag haben oder mit einem Slash beendet werden.
  • Leerraum in Attributwerten ist so zu behandeln, dass Leerzeichen vor und nach dem Wert entfernt und Leerzeichenfolgen auf ein einzelnes Leerzeichen reduziert werden.
  • Mit Inhalt gefüllte Skript- und Style-Elemente werden in XHTML in CDATA-Abschnitte gepackt, um Konflikte bei der Verwendung benannter Zeichen (Entities) auszuschließen. Diese Abschnitte werden vom XML-Prozessor erkannt und erscheinen als Knoten im Document-Object-Modell. Syntaktisch sieht das Ganze dann so aus:
    <style type="text/css">
      <![CDATA[
      …nicht-maskierter Inhalt…
      ]]>
    </style>
    
    Als Alternative hierzu empfiehlt es sich, externe Skript- und Styledateien zu verwenden.
  • Obwohl im XML-basierten XHTML, anders als in SGML, keine formale Möglichkeit besteht, Ausschlüsse für bestimmte Verschachtelungen und Verschachtelungstiefen zu definieren, sollten dennoch gewisse Elemente nicht ineinander verschachtelt werden (z.B. <a> in <a>, <label> in <label> oder <textarea> in <button>); Ausschlüsse dieser Art sind in einem kurzen Anhang zur XHTML-Empfehlung gelistet.
  • Das in HTML noch erforderliche Attribut 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.
  • Vordefinierte Wertemengen, die mit manchen Elementattributen verknüpft sind, müssen in XML und damit auch in XHTML klein geschrieben werden.
  • Werden Entity-Referenzen durch hexadezimale Werte ersetzt, ist bei diesen zwingend Kleinschreibung zu verwenden.

2Anatomie eines (X)HTML-Dokuments

2.1Die Deklaration des Dokumenttyps

XHTML 1.0 Strict

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

XHTML 1.0 Transitional

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

XHTML 1.0 Frameset

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

HTML 4.01 Strict

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN"
	"http://www.w3.org/TR/html4/strict.dtd">

HTML 4.01 Transitional

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
	"http://www.w3.org/TR/html4/loose.dtd">

HTML 4.01 Frameset

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
	"http://www.w3.org/TR/html4/frameset.dtd">

Wurzelelement mit Namespace-Angabe

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
  […Kopf- und Inhaltsteil…]
</html>

2.2Funktionen des Kopfteils

<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>

2.3Zur Einbindung von Stylesheets

<link rel="stylesheet" type="text/css" media="screen" href="layout.css" />

2.4Der Inhaltsteil des Dokuments

<body>
  […Inhalt…]
</body>

↓ Verknüpfung

Textanker