Zum Inhalt springen

Extensible Hypertext Markup Language

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 12. Juni 2005 um 21:39 Uhr durch Molily (Diskussion | Beiträge) (Erweiterungen bei XHTML: meine Bedenken an den Spekulationen eingearbeitet, siehe Diskussion). Sie kann sich erheblich von der aktuellen Version unterscheiden.

Die Extensible Hypertext Markup Language (Abk.: 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 mittels SGML definiert wurde, verwendet XHTML die strengere und einfacher zu parsende SGML-Teilmenge XML als Sprachgrundlage. XHTML-Dokumente entsprechen also den Syntaxregeln von XML.

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-Parser 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 Mobiltelefone 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 sieht grundlegende Veränderungen vor. 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 kleingeschrieben 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 (als Default-Namespace) 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- bzw. DOM-Zugriff auf die Elemente relevant.

Beispiel

Ein gewöhnlicher Webbrowser akzeptiert folgendes HTML-Dokument:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
<head>
  <title>Beispiel</title>

<h1>Beispielseite</h1>
<p>Ein Absatz
<P>Noch ein<br>
Absatz
<ol>
  <li>Listelement
  <li>Listelement
</ol>
<p><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 Zeichenkodierung des Dokuments mitteilt. Wenn die Kodierungsangabe fehlt und keine Kodierung im HTTP-Header gesendet wurde, kann der Browser 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 (Quirks-Modus), 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 den folgenden Abschnitt über MIME-Typen).

MIME-Typen und HTML-Kompatibilität

Beim Übertragen von HTML- und XHTML-Dokumenten finden bestimmte MIME-Typen 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-Typ text/html zu senden.
  • Ein XHTML 1.0-Dokument soll normalerweise gemäß RFC 3236 mit dem MIME-Typ 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-Typ 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, wie etwa die einfache Verarbeitbarkeit, ausgenutzt werden. Wenn dies der Fall ist, kann das Dokument nur dann dargestellt werden, wenn es sich um wohlgeformtes XML handelt. Viele aktuelle Browser, darunter Mozilla, Mozilla Firefox, Netscape Navigator, Opera und Safari, unterstützen den MIME-Typ application/xhtml+xml. Der weit verbreitete Internet Explorer kann mit diesem MIME-Typ jedoch nichts anfangen, er stellt lediglich den Quelltext der Seite mit Syntax-Highlighting dar. Daher sollte 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 werden, um den passenden MIME-Typ zu senden.

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 erlaubt wird und das Layout zwangsläufig mit CSS oder ähnlichen Sprachen 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 hierarchische Baumstruktur eines Dokuments nicht zweifelsfrei ermittelt werden. Manche Elemente haben kein Ende-Tag (wie z. B. <br> für einen Zeilenumbruch) oder ein optionales Ende-Tag (wie <p> für einen Textabsatz). Nur die DTD bestimmt, welche Elemente dies sind. Kennt der Parser 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-Verarbeitung folgendermaßen vor:

  • Auszeichnung durch unbekannte Elemente wird ignoriert.
  • Bei syntaktischen Fehlern wird versucht, trotzdem einen logischen Elementenbaum zu erzeugen. Es wird versucht, aus einer nicht-konformen Seite das Beste zu machen, d. h. eine Seite wird auf jeden Fall dargestellt.

Damit ist die Verarbeitung 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 in normaler Textformatierung. Dasselbe gilt für browserspezifische Erweiterungen. Das blink-Element ist z.B. in keinem HTML-Standard enthalten. Einige Browser, ursprünglich nur der Netscape, stellen den Text dann blinkend dar. Andere Browser stellen den Text wiederum normal dar.

Erweiterungen bei XHTML

Im Gegensatz zu HTML wurde XHTML mit Blick auf die Möglichkeit der Erweiterbarkeit geschaffen. XHTML nutzt dazu das Namensraum-Konzept von XML. Eine XHTML-Version bildet dabei einen solchen Namensraum. Andere XML-Sprachen wie MathML, SVG und RDF stellen weitere Namensräume dar. In einem XHTML-Dokument können nun Elemente aus fremden Namensräumen verwendet werden.

Erweiterungen sind also durch Bildung von neuen Namensräumen möglich, ohne dass die XHTML-Standards selbst geändert werden müssen. Durch die Verwendung von Namensräumen ist ein Konflikt von Elementen gleichen Namens in verschiedenen Erweiterungen ausgeschlossen. Diese können immer eindeutig zugeordnet und z.B. über das DOM mit der Kennung des Namensraums angesprochen werden. Die infolge der XHTML-Modularisierung entstandenen erweiterten XHTML-Versionen bauen auf diesem Konzept auf.

Durch das Entstehen solcher Erweiterungen tritt eine ähnliche Situation wie bei HTML-Erweiterungen ein, denn nicht alle Browser unterstützen die eingebundenen Erweiterungen wie z.B. SVG. Der Browser hat folgende Möglichkeiten, mit Elementen aus unbekannten Namensräumen umzugehen:

  • Er kann die Auszeichnung durch solche Elemente ignorieren und die Textinhalte einfach darstellen (wie bei HTML).
  • Er kann alle Elemente des unbekannten Namensraums sowie deren Textinhalte komplett ignorieren.
  • Er kann versuchen, aus dem Web ein Plug-In für die Erweiterung zu laden und die Seite dann korrekt darstellen.

Vorlage:Wikibooks1

XHTML betreffende Spezifikationen

XHTML selbst:

Grundlagen für XHTML:

Erweiterungen und Ergänzungen:

Sonstiges:

XHTML-Einführungen