Anzeige
Anzeige
Entwicklung
Artikel merken

Alles neu und vieles besser?: XHTML2

Als hätte uns der aktuelle Web-Standard-Hype nicht schon genug Arbeit beschert, steht bereits die nächste große Weiterentwicklung in den Startlöchern. Die kommende Version in der Ära der Hypertext-Markup-Sprachen birgt viele Neuerungen und massive Veränderungen. Uns steht der Abschied verdienter Freunde bevor, wir dürfen aber auch viele sinnvolle Entwicklungen begrüßen.

8 Min. Lesezeit
Anzeige
Anzeige

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.

Anzeige
Anzeige

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.

Anzeige
Anzeige

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.

Anzeige
Anzeige

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.

Anzeige
Anzeige

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:

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

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

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

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

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

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Schreib den ersten Kommentar!
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige