XHTML2

Alles neu und vieles besser?

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:

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

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

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

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

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

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

XHTML
<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
CSS
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:

HTML
<input type="submit" onclick="checkform(); return true;">
Listing 9

wird geändert in:

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

XHTML2
<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

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

XHTML2
<meta about="http://foo.bar/xhtml2.html" property="dc.creator">Eike Diestelkamp</meta>
Listing 13

Im Gegensatz zum Herkömmlichen:

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

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

- Anzeige-

Dieser Artikel stammt aus:

 

Weitere Artikel dieser Ausgabe

4.5 worth of usabililty, please

Crammed in between a representative of disillusioned french youth and a too-much-wine-drinking... »

Asterisk

Eine moderne Softwaretelefonanlage

Über 100 Jahre lang tat das analoge Telefon solide seinen Dienst, bis es Anfang der 90er... »

Barrierefreiheit in der Praxis

Das Thema Barrierefreiheit ist präsenter als je zuvor und auch TYPO3 hat sich besonders... »

Barrieren ausgestochen

Am 9. Dezember wurden in Potsdam die BIENE-Awards 2005 verliehen

Über 300 Websites hatten sich für den bedeutendsten Preis für barrierefreies... »

commerce

Die lang erwartete TYPO3 Extension ?commerce? steht kurz vor der Veröffentlichung

Die in diesem Artikel beschriebene „commerce“-Extension wurde maßgeblich durch... »

Das Netzwerk beim Netzwerk

OTRS im Einsatz bei openBC

Die weltweite Internetplattform für Businesskontakte openBC setzt im Support vollständig... »

Direct Mail

Newsletter-Versand mit TYPO3 Teil 2

Nachdem im ersten Teil des Workshops in der letzten Ausgabe des T3N Magazin die Grundlagen von... »

Extension Coordination Team (ECT)

Im TYPO3 Extension Repository befinden sich inzwischen über 1.000 Erweiterungen für... »

Firefox im Eigenbau

Schlank, schnell und sicher

Firefox ist mehr als nur ein Browser zum Surfen. Das Programm bietet viele kleine, oft versteckte... »

Shop  |  T3N Ausgaben  |  Open Source & TYPO3 Marktplatz
Übersicht  |  News  |  hype! Open Source & Web 2.0  |  RSS Feeds