Zum Inhalt springen

Extensible Hypertext Markup Language

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 24. Januar 2005 um 02:36 Uhr durch FischX (Diskussion | Beiträge) (XHTML betreffende Spezifikationen). Sie kann sich erheblich von der aktuellen Version unterscheiden.

XHTML ist die Abkürzung von Extensible HyperText Markup Language.

XHTML löst als Standard des W3C HTML als Textauszeichnungssprache für Webseiten im World Wide Web ab. Im Gegensatz zu seinem Vorläufer HTML, welcher auf SGML basiert, verwendet XHTML die strengere und einfacher zu parsende SGML-Teilmenge XML als Sprachgrundlage. Das heißt, alle XHTML-Dokumente sind zugleich XML-Dokumente.

XHTML 1.0: Übergang von HTML zu XHTML

XHTML 1.0 enthält dabei alle Elemente von HTML 4.01, sodass eine Umformung von HTML-4.01-konformen Seiten zu XHTML 1.0 leicht möglich ist. Ein nicht XHTML-fähiger Webbrowser kann XHTML-Dokumente trotzdem richtig darstellen, er verarbeitet sie als normales HTML. Dabei wird ausgenutzt, dass die HTML-Implementationen der verbreiteten Browser tolerant gegenüber Syntaxfehlern sind. Diese Fehlertoleranz entstand als Antwort darauf, dass zahlreiche HTML-Dokumente im World Wide Web nicht dem formalen Standard entsprachen und gleichzeitig Fehlermeldungen von Anwendern nicht akzeptiert werden. Für XHTML hingegen gilt die XML-Grundidee des unkomplizierten Datenaustauschs und der problemlosen automatisierten Verarbeitung. Daher sind Programme, die XHTML verarbeiten, nicht mehr derartig tolerant.

XHTML-Modularisierung

Um die Entwicklung von Sprachen zu ermöglichen, die auf XHTML basieren, wurden verwandte und zusammengehörige Elemente in so genannten Modulen zusammengefasst. Basierend auf diesen in DTDs und zukünftig in XML Schema abgefassten Modulen kann man eigene XHTML-Dokumenttypen nach dem Baukastenprinzip zusammenstellen und mit anderen XML-basierten Sprachen mischen. Beispielanwendungen der XHTML-Modularisierung sind XHTML 1.1, XHTML Basic sowie die Mischungen mit SMIL (Multimedia), SVG (Vektorgrafik) und MathML (mathematischer Formelsatz).

Versionenübersicht

XHTML fasst als Begriff die verschiedenen XHTML-Versionen zusammen:

  • XHTML 1.0 stellt die XML-basierte Neuformulierung von HTML 4.01 dar. XHTML 1.0 erhält die bekannten drei Dokumenttypen Strict, Transitional und Frameset. XHTML 1.0 wurde so angelegt, dass eine Rückwärtskompatibilität mit den verbreiteten HTML-Browsern möglich ist. Gleichzeitig kann es von neueren Browser gemäß der strengen Regeln verarbeitet werden.
  • Die aktuelle XHTML-Version 1.1 trennt sich von den missbilligten Elementen und Attributen der Transitional- und der Frameset-Variante, die direkt die Präsentation des Dokuments beeinflussen. Der Sprachumfang entspricht somit weitesgehend XHTML 1.0 Strict. XHTML 1.1 ist nicht mit Blick auf die Kompatibilität zu HTML-Browsern angelegt.
  • XHTML Basic ist für minimalistische Geräte wie Mobiltelefonen und Handhelds ausgelegt.
  • Durch die Modularisierung entstanden diverse Misch-Versionen, wie z. B. XHTML 1.1 plus MathML plus SVG.
  • Die momentan in der Entwicklung befindliche Version XHTML 2.0 bricht mit dem Erbe aus HTML 4 und enthält grundlegend neue Veränderungen. Dadurch sind XHTML-2.0-Dokumente nicht kompatibel mit XHTML 1.1. Wichtige Neuerungen sind das vereinfachte Einbinden anderer Medienarten (z. B. Grafiken und Videos), die erweiterten Möglichkeiten, um Zugänglichkeit zu gewährleisten, und das ausgereiftere Angeben von Metadaten. Bisherige Kernfunktionen von HTML bzw. XHTML werden in XHTML 2.0 in andere XML-Sprachen ausgelagert, namentlich XML Events, XForms und XFrames.

Die wichtigsten Unterschiede zwischen HTML und XHTML

  • Während in HTML die Schreibweise egal ist, müssen die Element- und Attributnamen in XHTML immer klein geschrieben werden.
  • Während es in HTML möglich ist, die Start- beziehungsweise End-Tags gewisser Elemente wegzulassen, müssen in XHTML beide immer angegeben werden. Für leere Elemente wird die Schreibweise <br /> verwendet, wobei das Leerzeichen vor dem schließenden / zur Kompatibilität mit einigen älteren Browsern empfohlen wird.
  • Attribute, die nur einen bestimmten Wert besitzen können und daher in HTML abgekürzt werden können, müssen immer einen Attributwert besitzen, z. B. <input type="radio" checked="checked" />.
  • Der Attributwert muss immer in Anführungszeichen stehen.
  • Das Wurzel-Element html muss immer die Namespace-Angabe im Start-Tag enthalten: <html xmlns="http://www.w3.org/1999/xhtml">
  • In XHTML 1.1 wurde das lang-Attribut durch das xml:lang-Attribut von XML ersetzt. In XHTML 1.0 wird die Angabe beider Attribute empfohlen, z. B. <html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">.
  • Die Rolle des name-Attributs bei den Elementen a, frame und map übernimmt ab XHTML 1.0 das id-Attribut. Wenn Abwärtskompatibilität erwünscht ist, sollten sowohl das name- als auch das id-Attribut mit gleichem Attributwert notiert werden. In XHTML 1.1 bzw. XHTML-Modularisierung existiert kein name-Attribut mehr für die besagten Elemente.
  • Das Attribut name bei den Elementen form und img ist nur noch in XHTML 1.0 Transitional vorhanden, nicht in XHTML 1.0' Strict und XHTML 1.1. Diese Einschränkung ist vor allem beim JavaScript-Zugriff auf die Elemente relevant.

Beispiel

Ein gewöhnlicher Webbrowser akzeptiert folgendes HTML-Dokument:

<HEAD>
  <title>Beispiel</title>

<H1>Beispielseite</H1>
Ein Absatz
<p>Noch ein<br>
Absatz
<OL>
  <li>Listelement
  <li>Listelement
</OL>
<img src=bild.gif alt="Bildmotiv">   

Eine Konvertierung in XHTML 1.0 könnte folgendes ergeben:

<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html 
    PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="de" xml:lang="de">
 <head>
   <title>Beispiel</title>
 </head>
 <body>
    <h1>Beispielseite</h1>
    <p>Ein Absatz</p>
    <p>Noch ein<br />
    Absatz
    </p>
    <ol>
      <li>Listelement</li>
      <li>Listelement</li>
    </ol>
    <p>
    <img src="bild.gif" alt="Bildmotiv" />
    </p>
 </body>
</html>

Die XML-Deklaration <?xml version="1.0" encoding="iso-8859-1" ?> ist optional, wird aber vom W3C empfohlen, da sie XML-Parsern die Kodierung des Dokuments mitteilt. Wenn die Kodierungsangabe fehlt und keine Kodierung im HTTP-Header gesendet wurde, kann der Benutzeragent gemäß dem XML-Standard die Kodierung UTF-8 oder UTF-16 verwenden. Die Angabe der XML-Deklaration führt dazu, dass der Internet Explorer 6 und Opera 7.0 bis 7.03 in den so genannten Kompatibilitätsmodus springen (Doctype-Switch), was zu Besonderheiten bei der Verarbeitung der Stylesheets führt. Aus diesem Grund wird die XML-Deklaration oft weggelassen, wenn das Dokument als text/html an diesen Browser ausgeliefert wird (siehe MIME-Typen).

MIME-Types und HTML-Kompatibilität

Beim Übertragen von HTML- und XHTML-Dokumenten finden bestimmte MIME-Types Verwendung, z. B. in der Content-Type-Kopfzeile bei E-Mail und vor allem bei HTTP:

  • Für HTML-Dokumente ist es gemäß RFC 2854 vorgesehen, sie mit dem MIME-Type text/html zu senden.
  • Ein XHTML 1.0-Dokument soll normalerweise gemäß RFC 3236 mit dem MIME-Type application/xhtml+xml gesendet werden. Wenn sich das Dokument an die Richtlinien der Rückwärtskompatibilität hält, kann es gemäß RFC 2854 und dem XHTML 1.0-Standard als text/html gesendet werden. Aufgrund der mangelnden XHTML-Unterstützung der verbreiteten Software kommt der letzteren Option ein besonderer Stellenwert zu.
  • Da für XHTML 1.1 keine Kompatibilität mit gewöhnlichen HTML-Browsern vorgesehen ist, sollen solche Dokumente gemäß einer W3C-Mitteilung nur als application/xhtml+xml ausgeliefert werden. Dasselbe gilt für die Abkömmlinge von XHTML-Modularisierung, also etwa XHTML Basic.

Vom MIME-Type hängt ab, wie die Browser das Dokument verarbeiten. Erst wenn ein XHTML-Dokument etwa mit dem Inhaltstyp application/xhtml+xml deklariert wird, setzen XHTML-fähige Browser ihre XML-Parser ein, durch welche die Vorteile des strengen XHTML-Codes, die einfache Verarbeitbarkeit, ausgenutzt werden. Wenn dies der Fall ist, kann das Dokument nur dann dargestellt werden, wenn es sich um wohlgeformtes XML handelt. Momentan unterstützen schon viele aktuelle Browser (z. B. Mozilla, Mozilla Firefox, Netscape Navigator, Opera oder Safari) den MIME-Type application/xhtml+xml. Der weitverbreitete Internet Explorer kann mit diesem MIME-Type dagegen nichts anfangen. Daher muss text/html verwendet werden, wenn der Browser nicht ausdrücklich in der Accept-Kopfzeile der Anfrage übermittelt hat, dass er application/xhtml+xml unterstützt. Dies kann serverseitig ermittelt und entsprechend der richtige MIME-Type verwendet werden.

XHTML und Layout

Mit HTML 4 begann das W3C damit, diejenigen Elemente und Attribute, die direkt für die Präsentation des Dokuments zuständig waren und keine ausgabe-unabhängige Strukturierung ausdrückten, schrittweise aus HTML auszuschließen. Zwar enthält XHTML 1.0 genauso wie HTML 4 eine Transitional-Variante mit diesen veralteten Sprachbestandteilen. Es hat sich jedoch im modernen Webdesign durchgesetzt, dass die Strict-Variante verwendet wird und die Dokumente konsequent mit CSS formatiert werden. Der strukturierte Inhalt und das jeweilige Layout können dadurch getrennt definiert werden. Mit XHTML 1.1 schließt das W3C diese Entwicklung endgültig ab, indem nur noch ausgabe-unabhängige Textauszeichnung möglich ist und das Layout zwangsläufig mit CSS realisiert werden muss.

Erweiterungen

Erweiterungen bei HTML

HTML-Seiten besitzen als SGML-Sprache zwar eine genau definierte Struktur, die in der Dokumenttypdefinition (DTD) festgelegt ist. Ohne Kenntnis der DTD kann aber die Hierarchie eines Dokuments nicht zweifelsfrei ermittelt werden. Manche Elemente haben kein Ende-Tag (wie z. B. <br /> für Zeilenumbruch) oder ein optionales Ende-Tag (wie <p> für Paragraph). Nur die DTD bestimmt, welche Elemente dies sind. Kennt man sie nicht, so ist die Dokumenthierarchie mehrdeutig. XHTML als XML-Sprache behebt diesen Mangel.

HTML ist eigentlich nicht erweiterbar, übliche Browser gehen aber bei der HTML-Interpretation folgendermaßen vor:

  • Auszeichnung durch unbekannte Elemente wird ignoriert.
  • Sie versuchen aus einer nicht-konformen Seite das Beste zu machen, d. h. eine Seite wird auf jeden Fall interpretiert.
  • Bei syntaktischen Fehlern werden keine Meldungen erzeugt.

Damit ist die Interpretation von verschiedenen HTML-Versionen möglich. Führt eine Version ein neues Element ein, wird dieses von älteren Browsern einfach ignoriert. Gleiches gilt für Attribute. Kennt ein HTML-3.2-fähiger Browser beispielsweise das in HTML 4.0 eingeführte acronym-Element (für Abkürzungen) nicht, wird es überlesen und die Abkürzung erscheint im normalen Zeichensatz. Gleiches gilt für browserspezifische Erweiterungen. Das blink-Element ist in keinem HTML-Standard enthalten. Netscape-Browser stellen den Text dann blinkend dar. Andere Browser stellen den Text wiederum normal dar.

Erweiterungen bei XHTML

XHTML geht einen anderen Weg (das X steht ja gerade für extensible, erweiterbar). XHTML nutzt dazu das Namensraum-Konzept von XML aus. Eine XHTML-Version bildet dabei einen solchen Namensraum. Erweiterungen wie MathML und SVG stellen weitere Namensräume dar. In einem XHTML-Dokument können dann solche Erweiterungen eingebunden und verwendet werden. Die Dokumente folgen dann strikt ihren Standards. Erweiterungen, auch zukünftige, sind dennoch durch Bildung von neuen Namensräumen möglich, ohne dass beispielsweise der XHTML 1.1-Standard geändert werden müsste.

Durch die Verwendung von Namensräumen ist darüberhinaus ein Konflikt von Elementen gleichen Namens in verschiedenen Erweiterungen ausgeschlossen. Diese können immer eindeutig zugeordnet und sogar mit der Kennung des Namensraums ausgewählt werden.

Ein Browser, der eine Erweiterung oder neue Version nicht kennt, hat bei XHTML folgende Möglichkeiten:

  • Er kann die Darstellung zunächst ablehnen (möglicherweise mit der Option, sie trotzdem zu zeigen und das Beste daraus zu machen)
  • Er kann die Hierarchie der Seite ermitteln, und versuchen, Elemente, die in älteren Versionen definiert sind, so wie in der älteren Version darzustellen

Natürlich kann ein Browser, der auf ein in seiner Version fehlendes blink-Element trifft, nicht einfach den Text blinkend darstellen. Auch mathematischer Formelsatz ist unmöglich, wenn die Routinen nicht vorhanden sind. Der Browser hat aber folgende Möglichkeiten

  • Er kann die Auszeichnung durch unbekannte Elemente ignorieren und den Text einfach darstellen (wie unter HTML).
  • Unbekannte Teile kann er ignorieren (diese Möglichkeit existiert bei HTML nicht)
  • Er kann versuchen, aus dem Web ein Plug-In für die Erweiterung zu laden und die Seite dann korrekt darstellen.
Wikibooks: XHTML – Lern- und Lehrmaterialien

XHTML betreffende Spezifikationen

XHTML selbst:

Grundlagen für XHTML:

Erweiterungen und Ergänzungen:

Sonstiges:

XHTML-Einführungen

Siehe auch: Artikel XHTML in Wikibooks