Zum Inhalt springen

Extensible Hypertext Markup Language

aus Wikipedia, der freien Enzyklopädie
Dies ist eine alte Version dieser Seite, zuletzt bearbeitet am 7. November 2003 um 12:28 Uhr durch Hubi (Diskussion | Beiträge) (+xml-Zeile). 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 Sprache 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 enthält dabei alle Elemente von HTML 4.01, so dass eine Umformung von HTML 4.01 konformen Seiten in XHTML 1.0 leicht möglich ist . Ein nicht XHTML-fähiger Web-Browser 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 Internet 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.

Seit XHTML 1.1 / XHTML Basic ist XHTML modularisiert. Einige HTML-Tags, 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 fasst dabei 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).

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.

Erweiterbarkeit

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

  • Unbekannte Tags werden 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 Tag ein, wird dieses von älteren Browsers einfach ignoriert. Gleiches gilt für Attribute. Kennt ein HTML-3.2 fähiger Browser beispielsweise das in HTML 4.0 eingeführte <acronym>-Tag (für Abkürzungen) nicht, wird es überlesen und die Abkürzung erscheint im normalen Zeichensatz. Gleiches gilt für browserspezifische Erweiterungen. Das <blink>-Tag ist in keinem HTML-Standard enthalten. Netscape Browser stellen den Text dann blinkend dar. Andere Browser stellen den Text wiederum normal dar.

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.

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

Hinweis zum MIME-Type für XHTML

Der XHTML-MIME-Type 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: