In diesem Artikel werden
aus Platzgründen nicht alle Veränderungen im
Detail vorgestellt. Vielmehr liegt das
Augenmerk auf den zentralen Umstrukturierungen und einigen
Kuriositäten.
Der Wechsel vom althergebrachten und
wenig ausdrucksstarken HTML4 hin zu XHTML gestaltete sich eher wie
eine große Aufräumaktion, brachte aber kaum neue
Funktionalität. Die Webdesigner wurden zur XML-konformen
Schreibweise der Tags, zu mehr Semantik, zu mehr Trennung von
Struktur und Layout und letztendlich zu mehr „Standardtreue“
erzogen. Das hat bislang recht gut funktioniert, auch wenn der Anteil
standardkonformer Websites heute noch eher ein Minderheitendasein fristet. Mit XHTML1 sollte HTML zu einer XML-Applikation
weiterentwickelt werden. XHTML2 tritt nun an um bekannte Probleme zu
beseitigen und die Basis für Weiterentwicklungen zu schaffen.
Zusammengefasst ergeben sich folgende
Ziele im Design des neuen Standards: Bereits in XML formulierte
Entwicklungen sollen sich nahtlos in XHTML2 integrieren lassen. Durch
die Aufteilung in einzelne Module wird die
Wiederverwendbarkeit bestehender Standards (z. B. XForms und XML
Events) ermöglicht. Die Funktionen und Eigenschaften dieser
neuen Entwicklungen müssen nicht für XHTML2 adaptiert
werden, sondern können direkt genutzt werden. Allein CSS soll
nun für die Präsentation verantwortlich sein. Elemente die
nicht im Sinne einer Strukturdefinition oder einer semantischen
Annotation verwendet werden, sollen CSS-Definitionen weichen. Durch dieses radikale Aufräumen soll das
Schreiben und letztendlich auch das Interpretieren von XHTML2-Dokumenten vereinfacht und eine größere Plattformunabhängigkeit
gewährleistet werden. Das Semantic Web soll sich nicht nur in
semantischem Markup und einigen Meta-Tags wiederfinden, sondern in der
Möglichkeit zur tatsächlichen Adaption und Integration seiner
Frameworks.
Das W3C verzichtete großzügig auf eine „transitional“-Variante des neuen Standards. Damit wird ein deutlicher Schlussstrich
unter den Vorgänger gezogen, sodass der neue Standard keine
Altlasten mitschleppen muss.
Großes Reinemachen
Ungefähr 40 Elemente und 90
Attribute sind dem aktuellen XHTML2-Entwurf zum Opfer gefallen.
Selbst das img-Element stand zur Disposition. Zu wenige Möglichkeiten
zur Beschreibung boten Anlass zur Kritik. Der alternative Text im
alt-Attribut lässt sich nicht weiter annotieren und longdesc
wurde wegen seiner schlechten Handhabung vernachlässigt.
Außerdem gibt es kein glückliches Fallback-Handling, wenn
beispielsweise ein Bild nicht verfügbar ist. Um diesen Problemen
entgegentreten zu können, wird das src-Attribut in jedem Element
erlaubt. Zur Darstellung eines Bildes eröffnet sich nun folgender Weg:
<p xsrc="wegbeschreibung.png">Fahren sie die Ravensberger Straße Richtung Zentrum! Auf der rechten Seite sehen sie folgende Gebäude: <ul> <li>Großes Haus</li> <li>Kleines Haus</li> </ul> Biegen Sie nach dem großen Haus rechts ein! </p>
Listing 1
Das Bild ersetzt den im p-Element enthaltenen Inhalt, der dann als
Alternative und Fallback genutzt werden kann. Somit erübrigen
sich alt- und longdesc-Attribut und die dafür vorgesehene
Information kann besser annotiert werden. Das img-Element ist jedoch
weiterhin in abgespeckter Form verfügbar, da von seiner Abschaffung im Hinblick auf die Akzeptanz des neuen Standards Abstand
genommen wurde.
Auch die Links müssen einige
Veränderungen über sich ergehen lassen. Wie das
src-Attribut gehören „href“ und „target“
jetzt zur Familie der Common Attributes. Somit lässt sich
nun jedes beliebige Element mit einem Link versehen.
<ol role="navigation"> <li xhref="1.0.html">Erster Menüpunkt</li> <li xhref="2.0.html">Zweiter Menüpunkt</li> </ol>
Listing 2
In diesen Beispielen wird außerdem das
neue Attribut „role“ verwendet. Im Hinblick auf
Barrierefreiheit erscheint es wichtig, für jedes Element zu
definieren, welche Funktion es im Dokument hat. Momentan wird diese Aufgabe aus Mangel an Alternativen dem Attribut „id“
aufgedrängt.
Bei näherer Betrachtung erscheint diese Vorgehensweise jedoch
als wenig sinnvoll und legitimiert damit den Einsatz des neuen
role-Attributs. Aber nicht nur in Bezug auf Barrierefreiheit bietet
„role“ sinnvolle Einsatzgebiete. Durch eine Kombination von
Namensräumen und dem role-Attribut könnten sich externe
RSS-Feeds, wie in diesem Beispiel vorgeschlagen, erübrigen:
<section> <h role="rss:title">T3N.de – TYPO3 Nachrichten</h> <section> <p role="rss:description"> Alles rund um das Open Source Content Management System TYPO3 </p> </section> </section>
Listing 3
Mehr Strukturierung
In der Regel wird der Text in einem
Dokument in diverse Abschnitte und Unterabschnitte gegliedert
und mit Überschriften versehen. In herkömmlichem XHTML wird
das beispielsweise wie folgt annotiert:
<h1>Oberabschnitt</h1> <p>Text des Oberabschnitts als Absatz.</p> <h2>Unterabschnitt</h2> <p>Text des Unterabschnitts ebenfalls als Absatz.</p>
Listing 4
Im Sinne des Document Object Model (DOM) oder einer
Repräsentation als Baum befinden sich alle Elemente
gleichberechtigt auf einer Ebene. Nur durch ihre sequentielle Abfolge
ergibt sich implizit eine Abhängigkeit untereinander. Hier
bietet XHTML2 eine sinnvolle Alternative: Ähnlich wie im Markup
des Textsatzprogramms „LaTeX“ können Textblöcke mit dem
section-Element verschachtelt werden. Für Überschriften
jeder Hierarchietiefe reicht dann ein einfaches h-Element, da sich die
Position in der Hierarchie aus der Verschachtelung ergibt. Das
oben genannte Beispiel lässt sich dann wie folgt darstellen:
<section> <h>Oberabschnitt</h> <p>Text des Oberabschnitts als Absatz.</p> <section> <h>Unterabschnitt</h> <p>Text des Unterabschnitts ebenfalls als Absatz.</p> </section> </section>
Listing 5
Es werden in diesem einfachen Beispiel
zwar insgesamt vier weitere Tags verwendet, die Strukturdefinition
ist jedoch wesentlich eindeutiger. So werden unlogische Abfolgen
vermieden und ein hohes Maß an Wiederverwendbarkeit erreicht.
Außerdem ist man nicht länger auf sechs Ebenen (h1-h6)
beschränkt. Doch keine Angst: Die althergebrachten Elemente sind
weiterhin verfügbar und selbst eine Mischung von section- und
h-Elementen ist möglich. Es drängt
sich in unserem Kontext allerdings die Frage auf, wie sich diese Art
der Strukturdefinition unter anderem in die TYPO3-Oberfläche
integrieren lassen
wird.
Absätze
In vorherigen HTML-Versionen war im p-Element ausschließlich
Text erlaubt, worin einer der weit verbreiteten Syntax-Fehler
begründet liegt. Ein XHTML2-Absatz erlaubt nun mehr Elemente, die ein
Autor unter einem Absatz sinngemäß zusammenfassen würde.
Künftig sind auch Listen, Tabellen, das blockquote- und das
pre-Element erlaubt. Somit validiert folgendes Beispiel:
<p> <ul> <li>Listen in Absätzen</li> <li>...sind jetzt erlaubt</li> </ul> </p>
Listing 6
Im XHTML „Text Module“ wird das populäre br-Element
durch das neue l-Element (l steht für line) ersetzt. Bislang war es nicht möglich
eine einzelne Textzeile zu markieren. Das br-Element sorgte nur für
die Kennzeichnung des Zeilenendes. Mit dem l-Element lässt sich
nun jede einzelne Zeile beschreiben und deren Präsentationsform
über CSS steuern. So lassen sich beispielsweise einzelne Zeilen von Heinz Erhardts „Die Made“ über CSS
nummerieren:
<h>Heinz Erhardt: Die Made</h> <p> <l>Hinter eines Baumes Rinde</l> <l>wohnt die Made mit dem Kinde.</l> <l>Sie ist Witwe, denn der Gatte,</l> <l>den sie hatte, fiel vom Blatte.</l> <l>Diente so auf diese Weise</l> <l>einer Ameise als Speise.</l> </p>
Listing 7
l{ counter-increment: linenumber; content: counter(linenumber); }
Listing 8
XML Events
Die in XHTML definierten Elemente sind
rein statisch und besitzen von Haus aus keine Verhaltensdefinition.
Mit dem Einsatz von zusätzlichen Skriptsprachen können den
Elementen diese jedoch zugewiesen werden. Markup und
„event handling“ sind dabei allerdings eng
miteinander verflochten. Durch den 2003 verabschiedeten Standard „XML Events“ und dessen Verwendung in XHTML2 erfolgt eine klare
Trennung. Anstelle des script-Elements wird fortan das
handler-Element verwendet, um Skripte auszulagern:
<input type="submit" onclick="checkform(); return true;">
Listing 9
wird geändert in:
<input type="submit"> <handler ev:event="DOMActivate" type="text/javascript"> checkform(); </handler> </input>
Listing 10
Durch die Verwendung des handler-Elements lassen sich
beispielsweise für dasselbe Event verschiedene Skriptsprachen
ansprechen.
<handler ev:event="DOMActivate" type="text/vbs">...</haendler> <handler ev:event="DOMActivate" type="text/javascript">...</haendler
Listing 11
Auf der passiven Seite gibt es das listener-Element, mit dem eine
Ereignisüberwachung realisiert werden kann.
XFrames
Frames sind zwar kein Bestandteil der vorliegenden
XHTML2-Spezifikation, ihre Existenz ist davon aber nicht bedroht. Ganz
im
Gegenteil: Mit XFrames wird eine separate XML-Applikation erarbeitet,
die die Vorteile der herkömmlichen Frames bewahrt, ihren
Nachteilen aber den Kampf ansagt. Hierbei handelt es sich um eine
bisher wenig umfangreiche Spezifikation mit einer Hand voll Elementen.
Die bekannte Struktur wird nicht wesentlich geändert. Auffallend
ist die Methode, mit der Seiten in einem Frameset ausgetauscht
beziehungsweise wie spezifizierte Framesets über ein URI angesprochen
werden können. Ein Aufruf der beispielhaften Ressource
http://foo.bar/frameset.xfm#frames(menu=menu.html,content=1.0.html)
Listing 12
würde die Datei menu.html in den Frame mit der ID „menu“ laden und
im content-Frame die Datei „1.0.html“ anzeigen. Somit
können spezifische Inhalte über ein Frameset ohne
zusätzlichen Scripting-Aufwand identifiziert werden. Bleibt nur
das Problem, dass der User-Agent (Browser) in diesem Fall auch
XFrames unterstützen muss.
XHTML2 und das Semantic Web
XHTML und auch schon HTML bieten wesentliche Elemente zur
Strukturierung und semantischen Annotation von Informationen. Dieses
Inventar kann jedoch immer nur einen begrenzten semantischen Zugang
ermöglichen. Die HTML Working Group erhält immer wieder
Vorschläge für neue Elemente, die eine bessere semantische
Annotation ermöglichen sollen. Es liegt nahe, in diesem
Zusammenhang über das Verhältnis zwischen Beschreibung von
Semantik in XHTML-Dokumenten und den
Beschreibungsmöglichkeiten des Semantic Web (z. B. RDF)
nachzudenken. Um in dieser Hinsicht auf einen gemeinsamen Nenner kommen zu können, wurde die
bisherige Gestaltung von Meta-Information in XHTML in wesentlichen
Punkten überarbeitet. Der Inhalt des meta-Elements ist jetzt
nicht weiter auf das Attribut „content“ beschränkt,
sondern kann jeglichen Text umschließen und weiter
verschachtelte meta- und link-Elemente enthalten:
<meta about="http://foo.bar/xhtml2.html" property="dc.creator">Eike Diestelkamp</meta>
Listing 13
Im Gegensatz zum Herkömmlichen:
<meta name="dc.creator" content="Eike Diestelkamp" />
Listing 14
Mit dem property-Attribut wird die Relation zwischen Meta-Information
und Dokument definiert. In diesem Fall ist es die zweistellige
Relation <Dokument, Autor>. Das about-Attribut erweitert diese
Relation zu einem Tripel mit dem sich ein „Subjekt – Prädikat
– Objekt“-Statement beschreiben lässt. Der Wert von „about“
beschreibt das Subjekt, der Wert von „property“ dient als
Prädikat und beispielsweise der Inhalt des Elements als Subjekt.
Das about-Attribut kann eine Beziehung zu anderen Dokumenten aber
auch zu Teilen des aktuellen Dokuments herstellen. Für Links können die
Attribute „rel“ und „rev“ über Namensräume
definierte Werte aufnehmen:
<a rel="dc:publisher" xhref="http://foo.bar"/>
Listing 15
In diesem Beispiel wird der bereits aus HTML4 bekannte „Dublin
Core“-Namensraum verwendet. Darüber hinaus lassen sich noch
viele weitere Namensräume wie z. B. „rdf“, „rdfs“ oder „xsd“ verwenden.
Eigene Namensräume sind ebenfalls möglich. Außerdem lassen sich Meta-Daten
im gesamten Dokument verwenden. Wie „src“ gehören Meta-Attribute zur Familie der „Common
Attributes“. Im Dokument „versteckte“ Meta-Informationen wie
Autor, Titel oder die letzte Aktualisierung lassen sich einfach mit
den entsprechenden Werten im property-Attribut annotieren. Diese
Information muss nicht zusätzlich im head-Bereich
hinterlegt werden. Damit stehen Webautoren die gleichen Möglichkeiten zur Meta-Daten-Beschreibung wie in RDF zur Verfügung. Ein
praxistauglicher Anfang für das Semantic Web ist gemacht. Ob
diese Information dann auch von Autoren bereitgestellt und von
Suchmaschinen berücksichtigt wird, bleibt weiter ungewiss.
Fazit
Der neue XHTML-Standard birgt radikale Veränderungen, sorgt
dafür aber für mehr Struktur, Übersichtlichtkeit,
Logik und ermöglicht eine einfache Erweiterung. Ob die neue Technologie Akzeptanz
bei den Browser-Herstellern und Autoren finden wird, bleibt
abzuwarten. Die endgültige Umstellung wird wohl, wie so oft, Jahre in Anspruch nehmen. Wir warten ab und sind gespannt.