- XHTML
-
XHTML Dateiendung .xhtml, .xht, .html, .htm
MIME-Type application/xhtml+xml[1]
Entwickelt von World Wide Web Consortium Art Markup Language Erweitert von XML, HTML Standard(s): 1.0 (Recommendation),
1.1 (Recommendation),
2.0 (Working Draft)
1.1 SE (Working Draft),
5 (Working Draft),Der W3C-Standard Extensible HyperText Markup Language (erweiterbare HTML; Abkürzung: XHTML) ist eine textbasierte Auszeichnungssprache zur Strukturierung und semantischen Auszeichnung von Inhalten wie Texten, Bildern und Hyperlinks in Dokumenten. Es ist eine Neuformulierung von HTML 4 in XML 1.0: Im Gegensatz zu seinem Vorgänger HTML, welcher mittels SGML definiert wurde, verwendet XHTML die strengere und einfacher zu parsende SGML-Teilmenge XML als Sprachgrundlage. XHTML-Dokumente genügen also den Syntaxregeln von XML.
Inhaltsverzeichnis
XHTML 1.0: Übergang von HTML zu XHTML
XHTML 1.0 enthält 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 unter bestimmten Bedingungen trotzdem richtig darstellen (siehe MIME-Typen und HTML-Kompatibilität): 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 des Browsers über HTML-Syntax-Fehler von den Anwendern als sehr lästig empfunden 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.
Neuere XHTML-Dokumenttypen enthalten keine Layout-Auszeichnungen mehr. XHTML Transitional 1.0 ist der letzte Dokumenttyp, welcher noch Layout-Elemente enthält, wie etwa <font> oder <b>. In moderneren Dokumenttypen wie XHTML Strict 1.0 sind zwar noch wenige Layout-Elemente enthalten, allerdings nur noch aus Gründen der Rückwärtskompatibilität zu den Transitional-Dokumenttypen. In XHTML Basic oder XHTML 2 schließlich sind Layout-Elemente gar nicht mehr enthalten. Für die visuelle Gestaltung von XHTML-Elementen soll nur noch auf externe CSS-Regeln verwiesen werden.
XHTML-Modularisierung
Um die Entwicklung von Sprachen zu ermöglichen, die auf XHTML basieren, wurden verwandte und zusammengehörige Elemente in XHTML 1.1 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). Zum Einbinden allgemeiner Objekte wie zum Beispiel Multimedia-Plug-ins gibt es das Objektmodul.
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 Browsern gemäß den strengen Regeln verarbeitet werden.
- Die aktuelle Version XHTML 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 weitestgehend XHTML 1.0 Strict, hinzu kommen Elemente für Ruby-Erläuterungen. 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, indem nur einige Sprachbestandteile (Module) von XHTML verwendet werden. XHTML Basic ist die Basis für XHTML Mobile Profile (welches als WAP 2.0 in allen modernen mobilen Endgeräten implementiert ist) und für WML 2.0.
- Durch die Modularisierung entstanden weitere 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.
Wichtige Neuerungen sind das vereinfachte uneingeschränkte Notieren von Hyperlinks, 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 XForms für Formulare, XML Events zur Einbindung von Scripten und XFrames für Frames.
Die wichtigsten Unterschiede zwischen HTML und XHTML
HTML XHTML Groß- /
Kleinschreibung der Element- und Attributnamenegal (z. B. <br>
,<Br>
,<BR>
)immer klein (nur <br />
)Elemente ohne Inhalt, z. B. br
<br> <img>
entweder leeres Element-Tag
(z. B.<br />
) oder mit End-Tag
(z. B.<br></br>
)Die Variante
<br />
wird aus Gründen der Kompatibilität empfohlenStart- oder End-Tag weglassen teilweise erlaubt beide immer angegeben Attributwert in Anführungszeichen angeben optional, solange der Attributwert bestimmte Zeichen nicht enthält. immer boolesche Attribute, z. B. checked <input type="radio" checked>
Attributname als Attributwert angeben, z. B. <input type="radio" checked="checked" />
Außerdem:
- Das Start-Tag des Wurzel-Elements
html
muss immer die Namensraum-Angabe für XHTML enthalten:<html xmlns="http://www.w3.org/1999/xhtml">
- In XHTML 1.1 wurde das
lang
-Attribut durch dasxml: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 Elementena
,frame
undmap
übernimmt ab XHTML 1.0 dasid
-Attribut. Wenn Abwärtskompatibilität erwünscht ist, sollten sowohl dasname
- als auch dasid
-Attribut mit gleichem Attributwert notiert und XHTML 1.0 Transitional deklariert werden. In XHTML 1.1 bzw. XHTML-Modularisierung existiert keinname
-Attribut mehr für diese Elemente. - Das Attribut
name
bei den Elementenform
undimg
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 DOM-Zugriff auf die Elemente relevant.
Beispiel
Ein Webbrowser akzeptiert folgendes standardkonforme HTML-Dokument:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <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">
Das html- und das body-Tag wurden komplett weggelassen. Das head-Tag wurde nicht geschlossen, genauso wie viele andere (p, li). Bei dem Bild ist das src-Attribut ohne Anführungszeichen angegeben.
Das gleiche Dokument als gültiges XHTML 1.1 könnte folgendermaßen aussehen:
<?xml version="1.0" encoding="utf-8" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" 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="utf-8" ?>
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 Quirks-Modus springen, was zu Besonderheiten bei der Verarbeitung der Stylesheets und JavaScript 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 alstext/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 übrigen 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-Typapplication/xhtml+xml
. Der weit verbreitete Internet Explorer kann mit diesem MIME-Typ jedoch erst seit Version 7.0 etwas anfangen: Ältere Versionen öffnen einen Download-Dialog, anstatt das Dokument darzustellen. Daher solltetext/html
verwendet werden, wenn der Browser nicht ausdrücklich in derAccept
-Kopfzeile der Anfrage übermittelt hat, dass erapplication/xhtml+xml
unterstützt. Dies kann serverseitig ermittelt werden, um den passenden MIME-Typ zu senden – wobei man für den Internet Explorer ab Version 7.0 eine Versionsprüfung durchführen müsste, da der IE nach wie vor*/*
als MIME-Typ sendet.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 und dem geplanten XHTML 2.0 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 keinen End-Tag (wie z. B.
<br>
für einen Zeilenumbruch) oder ein optionales End-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. Dasblink
-Element ist beispielsweise in keinem HTML-Standard enthalten. Einige Browser, ursprünglich nur der Netscape Navigator, 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, indem Sie über das Attribut
xmlns
eine entsprechende Namensraum-Angabe erhalten.Ein Beispiel für die Nutzung des Namensraum-Konzeptes zur Erweiterung von XHTML ist die Einbettung von MathML:
<p>Dies ist noch ganz normales XHTML</p> <math xmlns="http://www.w3.org/1998/Math/MathML"> <mrow> <mi>x</mi> <mo>=</mo> <mfrac> <mrow> <mrow> <mo>-</mo> <mi>b</mi> </mrow> <mo>±</mo> <msqrt> <mrow> <msup> <mi>b</mi> <mn>2</mn> </msup> <mo>-</mo> <mrow> <mn>4</mn> <mo>⁢</mo> <mi>a</mi> <mo>⁢</mo> <mi>c</mi> </mrow> </mrow> </msqrt> </mrow> <mrow> <mn>2</mn> <mo>⁢</mo> <mi>a</mi> </mrow> </mfrac> </mrow> </math> <p>...und hier geht XHTML weiter</p>
Ein MathML-fähiger Browser könnte diesen Dokumentausschnitt folgendermaßen darstellen:
Dies ist noch ganz normales XHTML
… und hier geht XHTML weiter
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 zum Beispiel ü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 zum Beispiel 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.
Einzelnachweise
Weblinks
XHTML betreffende Spezifikationen
- XHTML selbst
- HTML 4.01 (deutsche Übersetzung)
- XHTML 1.0 (deutsche Übersetzung)
- Modularization of XHTML (deutsche Übersetzung)
- Abkömmlinge der XHTML-Modularisierung
- XHTML 1.1 (deutsche Übersetzung)
- XHTML Basic (deutsche Übersetzung)
- An XHTML + MathML + SVG Profile
- XHTML+SMIL Profile
- XHTML 2.0
- Grundlagen für XHTML
XHTML-Einführungen und -Werkzeuge
- Selfhtml
- Einführung in XHTML, CSS und Webdesign
- Fachartikel im T3N Magazin XHTML2: Vom XML-Hype zur Anwendung
- XHTML-Überblick von Jens Meiert
- HTML and XHTML Frequently Answered Questions
- XHTML 1.0 Schema Validator zur Überprüfung der Syntax eines XHTML-Dokuments (englisch)
- W3C Markup Validation Service, ebenfalls zur Prüfung auf syntaktische Fehler (englisch)
Standards des World Wide Web ConsortiumsEmpfehlungen (recommendations): Canonical XML | CDF | CGI | CSS | DOM | HTML | MathML | OWL | PLS | RDF | RDF-Schema | SISR | SMIL | SOAP | SRGS | SSML | SVG | SPARQL | Timed Text | VoiceXML | WSDL | XForms | XHTML | XML | XML Base | XML Events | XML Information Set | XML Schema | XML Signature | XPath | XPointer | XQuery | XSL Transformation | XSL-FO | XSL | XLink
Anmerkungen (notes): XHTML+SMIL | XAdES
Arbeitsentwürfe (working drafts): CCXML | CURIE | InkML | XFrames | XFDL | WICD | XHTML+MathML+SVG | XBL | XProc | HTML 5
Wikimedia Foundation.