XHTML statt HTML

23.08.2002 von Klaus Manhart und Martin Goldmann
HTML ist tot, es lebe XHTML. Das W3C macht den HTML-4.0-Standard durch die Verschmelzung mit XML fit für die Zukunft. tecChannel zeigt, wie Sie Ihre Website auf den neuen Standard vorbereiten.

XHTML ist die XML-Variante von HTML. Das bedeutet, dass alle Elemente von HTML 4.0 in XHTML so definiert sind, dass sie den Vorgaben und Anforderungen von XML entsprechen. XHTML 1.0 ist damit eine Anwendung von XML.

Der Vorteil: Durch XHTML wird es für Browser-Hersteller schwieriger, mit proprietären Erweiterungen aus den Vorgaben des W3C auszuscheren. Die XHTML-DTD schreibt genau vor, in welcher Form die einzelnen Tags zulässig sind - Raum für Interpretationen bleibt kaum. Für den Programmierer bedeutet das mehr Sicherheit beim Verfassen von Dokumenten. Wenn eine XHTML-Datei funktioniert, arbeitet sie auf sämtlichen Clients.

Ein weiterer Vorteil der Nähe zu XML: Der Code muss wohl geformt sein. Das bedeutet, bei der Syntax des Codes legt XHTML weit strengere Maßstäbe an als HTML. Für die Clients hat dies weniger Aufwand zur Folge: Der Internet Explorer und in einigen Fällen auch der Netscape Navigator lassen viele HTML-Schlampereien durch. Der hierfür erforderliche fehlertolerante Code ist Ballast, der bei einem reinen XHTML-Browser nicht erforderlich ist.

Änderungen in XHTML

Die aus HTML bekannten Tags bleiben praktisch unverändert erhalten. Ein <table> funktioniert genauso in XHTML wie in HTML, auch die "Entities", Zeichendefinitionen wie &ouml; oder &#246; ändern sich nicht. Der einzige Unterschied ist, dass jedes XHTML-Dokument auf einer DTD (Document Type Definition) basiert.

In XHTML gibt es drei DTDs: Strict, Transitional und Frameset. Strict ist die Variante der Wahl, wenn moderne HTML-4-Dokumente inklusive Stylesheet-Anweisungen nachgebaut werden sollen. Transitional sorgt für die Rückwärtskompatibilität von Dokumenten und bedient auch Clients, die nichts mit Stilvorlagen anfangen können. Frameset schließlich steht für Dokumente, die eine Rahmendefinition, also ein Frameset, bestimmen. Die Beschreibungen sehen so aus:

<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<!DOCTYPE
html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

Eine einfache Beispieldatei in XHTML unterscheidet sich von ihrem HTML-Pendant nur in den Kopfzeilen:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/ DTD/strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Hallo Erde</TITLE>

</head>
<body>
<p>Willkommen bei<a href="https://www.tecchannel.de/link.cfm?type=page&pk=45"> tecChannel.de</a>.</p>
</body>
</html>

XHTML fordert Programmierdisziplin

Beim Programmieren von XHTML-Seiten ist jedoch mehr Disziplin gefordert. XHTML-Programmierer können es sich nicht mehr leisten, zum Beispiel ein <p>-Tag zum bloßen Trenner für Absätze zu degradieren. Außerdem gilt es, alle Attribute und Werte in Anführungszeichen zu schreiben. Mit der Verschachtelung bestimmter Elemente ineinander ist es ebenfalls vorbei. XHTML definiert einige strikte Verbote.

Diese untersagen allerdings nur Aktionen, die ohnehin unsinnig sind. Nur haben manche Browser die Fehler meist nicht bemerkt oder moniert. Die Verbote sind:

Diese Restriktionen bieten eine deutliche Arbeitserleichterung für Programmierer. Dank der engeren Vorgaben lassen sich viele Fehler vermeiden, die man früher erst auf den zweiten Blick bemerkte. Vor allem ist es mit dem XML-basierenden Ansatz endlich möglich, vernünftige Debugger für XHTML-Seiten zu schreiben. Sie untersuchen anhand der Vorgaben in der DTD die Syntax eines XHTML-Dokuments, um Fehler schon während der Entwicklung zu erkennen.

HTML-Seiten auf XHTML vorbereiten

Bis sich XHTML durchsetzt, wird es noch eine Weile dauern. Dennoch können Sie sich schon jetzt auf den neuen Standard vorbereiten. Mit ein paar Grundregeln lässt sich HTML-4-Code so gestalten, dass Sie ihn später mit minimalem Aufwand auf XHTML umstellen können.

Wenn Sie Auftragsarbeiten an HTML-Programmierer herausgeben oder selbst programmieren, achten Sie darauf, dass Sie nur noch wohl geformten, also den XML-Konventionen entsprechenden Code bekommen. Beachten Sie dabei die folgenden Punkte:

<table rows="5" cellpadding="3"> oder <td align="right">

Weitere Umstellungsregeln

<p>Das ist ein Absatz <b>mit Fettschrift</p></b>

<p>Das ist ein Absatz <b>mit Fettschrift</b></p>

<dl compact="compact">

<img id="bild" name="bild" ....>

Modularisierung von XHTML

Nach den Vorstellungen des W3C wird die Portabilität ein zentrales Charakteristikum von XHTML sein. XHMTL soll in Zukunft eine breite Vielfalt von Geräten bedienen - von Taschencomputern über Mobiltelefone und Fernsehapparate bis zu stationären Computern.

Um diese Endgeräte unterschiedlichster Leistungsklassen ansprechen zu können und die verschiedenen Bedürfnisse von Nutzern, Entwicklern und Designern zu befriedigen, hat sich das W3C entschlossen, XHTML in "handliche Module" aufzusplitten. Diese werden zum Entwickeln von Subsets und Erweiterungen verwendet. Damit werden Entwicklern standardisierte Bausteine für das Erstellen von Inhalten an die Hand gegeben.

So würden beispielsweise einfache WAP-Handys dann nur wenige Module unterstützen, High-End-Mobilgeräte wie PDAs oder spätere UMTS-Geräte entsprechend mehr und stationäre PCs wiederum umfangreichere Module als Mobile Devices.

Vor allem Herstellern von Browsern für alternative Endgeräte wie Handys oder Handheld-Computer bringt die Modularisierung Vorteile: Die Devices verfügen meist nur über begrenzten Speicher oder geringe Rechenleistung. Die Software in den Geräten wird durch die strikten XML-Regeln effizienter, weshalb weniger Programmieraufwand erforderlich ist. Gleichzeitig können die Browser die Seiten besser an die speziellen Eigenschaften der Geräte anpassen, da die Spezifikation viel genauer ist.

Modul-Philosophie

Die grundlegende Philosophie hinter der XHTML-Modularisierung ist schnell erklärt. Ein basales Grundgerüst von XHTML-Kernmodulen ermöglicht die Entwicklung von XHTML-konformen Markup-Sprachen. Jede dieser neuen Sprachen muss dieses Grundgerüst enthalten. Zusätzlich können sie andere XHTML-Module verwenden, vom W3C definierte Module oder auch vom Autor spezifizierte Module, die korrekt definiert wurden.

All diese Module lassen sich innerhalb des XHTML Framework zusammenfügen und legen so eine neue, aufgabenspezifische Markup-Sprache fest, mit der sich portabler, XHTML-konformer Content entwickeln lässt, der auf jedem XHTML-konformen Client einsetzbar ist. Dadurch, dass man die Elemente beliebig kombinieren und selbst eigene Module schreiben kann, sind auch herstellerspezifische Erweiterungen beispielsweise von Netscape oder Microsoft absolut legal und vertragen sich besser mit dem Konkurrenz-Browser als bisher.

Abstrakte und DTD-Module

Das W3C hat eine ganze Reihe von Dokumenten publiziert, in denen unterschiedlich leistungsfähige XHTML-Markup-Sprachen definiert werden. Das hierfür relevante Grundlagendokument mit dem Titel Modularization of XHTML schafft die normative Basis zur Modularisierung. Das Dokument legt auf einem sehr abstrakten Level fest, wie XHTML-Module definiert werden und zerlegt XHTML 1.0 in Pakete von Elementen und Attributen. Sie beinhalten die Kernmodule, die in allen XHTML-Dokumenttypen enthalten sein müssen und die auf sämtlichen XHTML-konformen Systemen laufen.

Die Modularisierung besteht aus zwei verschiedenen Modultypen. Man unterscheidet:

Die Spezifikation der abstrakten Module legt alle Datentypen fest und teilweise die Werte, die diese Datentypen annehmen können. Dazu gehört beispielsweise das Strukturmodul, das die wichtigsten Elemente wie Body oder Head von XHTML-Dokumenten definiert. Eine detaillierte Beschreibung dieser Datentypen kann man auf der entsprechenden W3C-Seite einsehen.

Abstrakte Module im Überblick

Die Implementierung der abstrakten Module erfolgt in Form von XML-DTDs. Ein DTD-Modul besteht aus einem Satz Elementtypen, einem Satz Attributlisten-Deklarationen und einem Satz Content-Model-Deklarationen. Dies gibt dem Anwender die Mittel an die Hand, eine speziell für seine Website abgestimmte DTD zu schreiben, welche nur die Elemente enthält, die man wirklich benötigt. Mit Hilfe dieser DTD ist es dann möglich, den Content lediglich an spezielle Hardware-Plattformen auszuliefern.

Die Module von XHTML und ihre Elemente

Modulname

Elemente

Modul für

Structure

body head html title

Elemente für das Grundgerüst eines XHTML-Dokuments.

Text

abbr acronym address blockquote br cite code dfn div em h1 h2 h3 h4 h5 h6 kbd p pre q samp span strong var

Block- und Inline-Elemente, die Text enthalten können und logische Auszeichnungen darstellen.

Hypertext

a

Anker und Verweise.

List

dl dt dd ol ul li

nummerierte (Aufzählungs-) Listen.

Object

object param

Multimedia-Referenzen.

Presentation

b big hr i small sub sup tt

visuelle Darstellungen, physische Auszeichnungen

Edit

del ins

Änderungsmarkierungen im Text.

Bidirectional Text

bdo

mehrsprachige Dokumente mit unterschiedlicher Schreibrichtung.

Forms

button fieldset form input label legend select optgroup option textarea

Formulare und Formularelemente.

Table

caption col colgroup table tbody td tfoot th thead tr

Tabellen und Tabellenelemente.

Image

img

Grafikreferenzen.

Client-side Image Map

area map

Grafiken mit verweis-sensitiven Flächen.

Server-side Image Map

ismap (bei img)

Grafiken mit verweis-sensitiven Flächen, in Kommunikation mit dem Webserver darzustellen.

Intrinsic Events

on (Event-Handler-Attribute)

Event-Handler, die eine Schnittstelle für Script-Sprachen bilden.

Meta-Information

meta

Meta-Daten für Suchmaschinen und Browser.

Scripting

noscript script

Script-Bereiche und Bereiche für Browser, die keine Scripts ausführen.

Stylesheet

style (Element)

Bereiche, in denen Stylesheet-Formate definiert werden.

Style-Attribute

style (Attribut)

Style-Attribut

Link

link

logische Beziehungen zu anderen Dateien.

Base

base

Adress- und Zielfensterbasis.

Ruby Annotation

ruby rbc rtc rb rt rp

Textform für fernöstliche Sprachen, um Silben- oder Wortzeichen mit zusätzlichen semantischen Hinweisen zu versehen.

XHTML Basic

Die erste, auf Basis der XHTML-Modularisierung definierte, aufgabenspezifische Markup-Sprache ist XHTML Basic. Die Motivation für XHTML Basic bestand darin, einen XHTML-Dokumenttyp bereitzustellen, der von allen Gemeinschaften geteilt werden kann und der gleichzeitig reich genug ist für einfaches Content Authoring. Die Sprache ist vor allem für speicherarme Kleingeräte geschaffen worden, zum Beispiel für Handys, PDAs oder Pager. Entsprechend ist die Basic-Variante der "kleinste gemeinsame Nenner" - quasi die "Mobilausgabe" - von XHTML.

Die W3C-Spezifikation definiert den XHTML-Basic-Dokumenttyp auf der Grundlage der Modularisierung und beinhaltet die Module, die mindestens erforderlich sind, um ein Dokumenttyp der XHTML-Muttersprache zu sein. Zusätzlich enthält er Grafiken, Formulare, grundlegende Tabellen und Objektunterstützung.

XHTML Basic kommt an Einfachheit und Kompatibilität den frühen Versionen von HTML gleich und bildet eine gemeinsame Grundlage. Diese kann erweitert werden. So lässt sich zum Beispiel ein Event-Modul, das umfassender ist als das traditionelle HTML-4-Event-System, einfügen. Eine weitere häufig genutzte Möglichkeit ist ein Scripting-Modul.

Nicht unterstützte Elemente

In XHTML Basic werden diejenigen Eigenschaften nicht unterstützt, die für Geräte mit kleinen Displays unangemessen sind. Im Detail sind dies die folgenden:

Basic-Elemente und -Module

Alle in XHTML Basic zusammengefassten Module und ihre Elemente sind in der folgenden Tabelle aufgelistet.

Die Module und Elemente von XHTML Basic

Modulname

Elemente

Structure

body, head, html, title

Text

abbr, acronym, address, blockquote, br, cite, code, dfn, div, em, h1, h2, h3, h4, h5, h6, kbd, p, pre, q, samp, span, strong, var

Hypertext

a

List

dl, dt, dd, ol, ul, li

Forms

form, input, label, select, option, textarea

Table

caption, table, td, th, tr

Image

img

Object

object, param

Meta-Information

meta

Link

link

Base

base

XHTML Basic wird zum Teil bereits eingesetzt. So kann der in den Mobiltelefonmodellen Nokia 6210 und 7190 verwendete Mikro-Browser nicht nur mit WML geschriebene Seiten anzeigen, sondern er kommt auch mit XHTML zurecht. Unter www.nokia.com/xhtmldemo findet sich ein Demo, das die Möglichkeiten von XHTML demonstriert. Auch Microsofts Mobile Explorer unterstützt neben WML bereits XHTML.

Neben Nokia haben auch Motorola, Ericsson, Siemens und zahlreiche andere Mobilfunkunternehmen zugesichert, dass sie XHTML als künftiges Format für Mobilfunkdienste unterstützen werden. Die Firmen kündigten an, dass sie Produkte, Inhalte und Dienste auf XHTML-Basis entwickeln werden.

XHTML 1.1

Ein weiterer, auf der Modularisierung von XHTML beruhender Dokumenttyp, ist XHTML 1.1. Unter dem Titel XHTML 1.1 - Module based XHTML hat das W3C offiziell einen neuen Dokumenttyp definiert, der auf den Modulen der Modularisierungs-Definition beruht. In diesem Dokumenttyp werden die Module aus der XHTML-Modularisierung in einer Markup-Sprache zusammengefügt, die als Basis für künftige XHTML-Entwicklungen dienen soll.

Bei XHTML 1.1 handelt es sich im Wesentlichen um eine Neuformulierung von XHTML 1.0 unter strikter Nutzung der Module. Dies bedeutet, dass viele Features des XHTML-Dokumenttyps wie Frames in diesem Dokumenttyp fehlen. Diese Features sind erst über Module verfügbar, wie sie in der Modularisierung von XHTML festgelegt sind. Autoren können selbstverständlich auch eigene Dokumenttypen definieren, die auf XHTML 1.1 basieren und diese Features nutzen.

XHTML 1.1. soll sich insbesondere durch die Streichung von deprecated-Elementen (deprecated = missbilligt), die in HTML 4 beziehungsweise XHTML 1.0 noch geduldet waren, als sauber definierte Grundlage für Weiterentwicklungen positionieren. Wegen der Streichung aller deprecated-Elemente sowie auf Grund der Forderung nach Stylesheets und der damit strikten Trennung zwischen Inhalt und Layout kann XTHML 1.1 als ein echter Neuanfang bezeichnet werden.

Content-Entwickler, die ihre Inhalte auf XHTML 1.1 aufbauen, können darauf vertrauen, dass sie auf allen Plattformen einsetzbar sind, die XHTML unterstützen. XHTML-1.1-Dokumente werden zum einen auf historischen und existierenden Browsern problemlos dargestellt. Da sie per Definition gültige XML-Dokumente sind, können sie zum anderen aber auch von XML-Suchmaschinen und anderen Technologien verarbeitet werden.

Fazit

XHTML ist ein neuer Ansatz des W3C, um endlich die teilweise unkontrollierte Entwicklung des World Wide Web in den Griff zu bekommen. Nachdem man mit den 3er Versionen von HTML den Browser-Herstellern hinterherhinkte und mit HTML 4.0 den Status quo festklopfte, weist XHTML in die Zukunft. Und im Gegensatz zu früheren Vorschlägen zu HTML hat XHTML das Zeug, sich wirklich durchzusetzen. Denn an XML wird kein Software-Hersteller vorbeikommen. Und wo XML ist, funktioniert auch XHTML.

Allerdings kann XHTML nur ein Übergangsprodukt auf dem Weg zur kompletten Umstellung der Webdaten in XML sein. Denn die in XHTML umgeschriebenen HTML-Tags sagen nach wie vor nur etwas über das Aussehen eines Objekts aus, jedoch nichts über dessen Inhalt oder über die Struktur einer Datei.

Einen echten Fortschritt stellt das Konzept des modularisierten XHTML dar. Der modulare Aufbau erlaubt den Clients, nur die Bestandteile von XHTML zu verwenden, die sie benötigen. Außerdem befreit der neue XHTML-1.1-Ansatz von den drei unterschiedlichen Document Type Definitions und kommt mit nur noch einer DTD aus. Dies garantiert laut dem W3C, dass sich XHTML 1.1 auf wirklich allen XML-fähigen Clients einsetzen lässt. Inwieweit sich das Konzept der Modularisierung durchsetzen wird, bleibt abzuwarten. Zumindest im Mobilbereich dürfte XHTML künftig eine entscheidende Schlüsselrolle einnehmen und aktuelle Konkurrenten wie das altbackene WML ablösen. (ala)