Zum Inhalt springen

Extensible Hypertext Markup Language

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 14. Dezember 2003 um 12:47 Uhr durch Fristu (Diskussion | Beiträge) (-e). 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 nur auf SGML basiert, verwendet XHTML das strengere und einfacher zu parsende SGML-Subset 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, so dass 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 interpretiert sie als normales HTML. Ausgenutzt wird, dass die HTML-Implementationen normaler Browser tolerant gegenüber Abweichungen sind (Letzteres weil sich ohnehin nicht alle HTML-Seiten im World Wide Web zu 100 % an den Standard halten, Fehlermeldungen von Anwendern aber nicht akzeptiert werden). XHTML führt eine strengere Überprüfung des Standards ein. XHTML-fähige Browser sind daher nicht mehr tolerant, sobald sie erkennen, dass eine Seite im XHTML-Format geschrieben ist.

XHTML 1.1: Modulares Prinzip

Seit XHTML 1.1 / XHTML Basic ist XHTML modularisiert. Einige HTML-Elemente, die in HTML ohnehin als unerwünscht (deprecated) gekennzeichnet sind, sind in dieser Version nicht mehr vorhanden. Basierend auf den Modulen kann man sich eigene XHTML-Dokumenttypen nach dem Baukastenprinzip zusammenbauen und mit eigenen Modulen und anderen XML-basierten Sprachen mischen. Das W3C schlägt unter anderem die Mischung mit SMIL (Multimedia), SVG (Vektorgrafik) oder MathML (mathematischer Formelsatz) als Beispiele dafür vor.

XHTML Versionen

XHTML fasst als Begriff die verschiedenen XHTML-Versionen zusammen:

  • veraltet: XHTML 1.0 Strict, XHTML 1.0 Transitional, XHTML 1.0 Frameset als XML-basierte Neuformulierung von HTML 4.01 mit Rückwärtskompatibilität
  • aktuell: XHTML Basic für eingeschränkte Geräte wie Handys und Handhelds.
  • aktuell: XHTML 1.1 als derzeitige Version für normale Web-Browser
  • zukünftig: XHTML 2.0
  • Misch-Versionen (z.B. XHTML 1.1 + MathML + SVG).

XHTML und Layout

XHTML arbeitet mit CSS zur Definition des Stils zusammen. Dadurch können Inhalt und Form einer Seite getrennt definiert werden. Dies entspricht der Trennung von Redaktion und Layout. Obwohl auch HTML mit CSS zusammenarbeiten kann, geht die Entwicklungsrichtung von XHTML eindeutig weg von Layoutdefinitionen, für die dann CSS verwendet werden kann.

Die wichtigsten Unterschiede zwischen HTML und XHTML

  • Während in HTML die Schreibweise egal ist, müssen die Namen von Elementen und Attributen in XHTML immer klein geschrieben werden.
  • Elemente müssen immer geschlossen werden. Für leere Elemente verwendet man üblicherweise das EmptyElemTag, z.B. <br />, das Leerzeichen vor dem / wird zur Kompatibilität mit einigen älteren Browsern empfohlen.
  • Attribute müssen immer einen Attributwert besitzen, z.B. <hr noshade="noshade" />.
  • Der Attributwert muss immer in Anführungszeichen stehen.
  • Das Dokumentelement, in der Regel das <html/>-Element, muss immer die Namespace-Deklaration beim Start-Tag tragen: <html xmlns="http://www.w3.org/1999/xhtml">
  • Das lang-Attribut wurde abgeschafft bzw. durch das xml:lang-Attribut von XML ersetzt.

Dokumente werden von einem XHTML- oder XML-Browser nur dargestellt, wenn sie XML-Dokumente, also wohl-geformt sind. Außerdem wird empfohlen, nur gültige XHTML-Dokumente, also solche mit Dokumenttypdeklaration oder auch Schema zu schreiben.

Beispiel

Ein normaler Web-Browser würde folgende Seite als HTML akzeptieren:

<HTML>
  <head>
    <title>Beispiel&lt/title>
  </head>
  <BODY>
    <H1>Beispielseite</H1>
    Ein Paragraph
    <p>noch ein<br>
    paragraph
    <OL>
      <li value=4>Listelement
      <li value=5>Listelement
    </OL>   
  &lt/BODY>
&lt/HTML>

Eine Konvertierung in XHTML 1.0 könnte folgendes ergeben:

<?xml version="1.0" encoding="UTF-8"?>
<!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" xml:lang="de" lang="de">
 <head>
   <title>Beispiel&lt/title>
 </head>
 <body>
    <h1>Beispielseite</h1>
    Ein Paragraph
    <p>noch ein<br />
    paragraph
    </p>
    <ol>
      <li value="4">Listelement</li>
      <li value="5">Listelement</li>
    </ol>   
 </body>
</html>

Die erste Zeile <?xml version="1.0" encoding="UTF-8"?> ist optional, wird aber vom W3C-Konsortium empfohlen. Dies führt dazu, dass XHTML-fähige Browser die Seite als XHTML interpretieren. Leider ist die Implementation von XHTML derzeit (2003) in verschiedenen Browsern unterschiedlich und teilweise fehlerhaft. In der Praxis wird die Zeile häufig weggelassen. Dies führt dazu, dass die Browser die Seite doch als HTML interpretieren, was zu besseren Ergebnissen und weniger Fehlern führt.

Erweiterungen ...

... bei HTML

HTML-Seiten besitzen als SGML-Sprache zwar eine genau definierte Struktur, die in der DTD (Document Type Definition) festgelegt ist. Ohne Kenntnis der Struktur kann aber die Hierarchie eines Dokuments nicht zweifelsfrei ermittelt werden, da hierzu die Kenntnis des Endes eines Bereichs nötig ist. Manche Elemente haben aber kein Ende-Tag (wie z. B. <br> für Zeilenumbruch) oder ein optionales Ende-Tag (wie <p> für Paragraph). 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.

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

MIME-Typ von XHTML

Der XHTML-MIME-Typ appliation/xhtml+xml, welcher als Content-Type-Header bei E-Mail, HTTP und in Betriebssystemen verwendet werden soll, ist in RFC 3236 beschrieben.

Dabei gilt allgemein folgendes:

  • HTML muss als text/html gesendet werden.
  • XHTML 1.0 kann als application/xhtml+xml gesendet werden; achtet man auf die Rückwärtskompatibilität mit HTML, ist auch das Senden als text/html möglich.
  • XHTML Basic und XHTML 1.1 sollten immer als application/xhtml+xml gesendet werden.


XHTML betreffende Spezifikationen (W3C und IETF)

XHTML selbst:

  • HTML 4.01 ist nach wie vor die Beschreibung für die Semantik der Elemente von XHTML; erst XHTML 2.0 wird eine neue, eigene Beschreibung der Semantik erhalten.
  • XHTML 1.0 ist im Wesentlichen nur eine Reformulierung von HTML 4.01 auf der Basis XML statt SGML. Wie HTML 4.01 auch gibt es XHTML 1.0 in drei Varianten: XHTML 1.0 Strict, XHTML 1.0 Transitional und XHTML 1.0 Frameset.
  • Modularization of XHTML zerlegt XHTML in einzelne Module und beschreibt diese.
  • XHTML Basic ist eine Auswahl von Modulen aus Modularization of XHTML für eingeschränkte Geräte wie Handys und Handhelds.
  • Ruby ist ein Modul für die Darstellung von Textüber- und -unterschriften, die insbesondere bei asiatischen Schriften gebräuchlich sind.
  • XHTML 1.1 ist eine Auswahl von Modulen aus Modularization of XHTML und Ruby und als die derzeit aktuelle (X)HTML-Version betrachtet werden kann.
  • XHTML 2.0 ist die derzeit in Entwicklung befindliche nächste Version von XHTML.

Grundlagen für XHTML:

  • XML als Basis für die Syntax von XHTML
  • XML Namespaces zum Verwenden und Mischen verschiedener XML-basierter Sprachen

Erweiterungen und Ergänzungen:

Sonstiges: