Die XML-Familie ist um drei Spezifikationen reicher geworden: am 23. Januar erhob das W3C die Spezifikationen XQuery 1.0, XSLT 2.0 und XPath 2.0 in den Stand einer Recommendation. Die (Implementierungs-) Empfehlung durch das World Wide Web Consortium garantiert eine weit gehende Kompatibilität zwischen verschiedenen XQuery- und XSLT-Prozessoren unterschiedlicher Hersteller und erlaubt damit, ein und dasselbe XSLT-Stylesheet oder XQuery-Abfrage in verschiedenen Umgebungen zu nutzen.
Die Verschwörungstheorie
Natürlich ist es kein Zufall, dass die drei
Spezifikationen (eigentlich sind es sogar
acht, doch das ist nur ein unwesentliches Detail) an demselben Tag als Standard
verabschiedet werden. Die folgende (stark vereinfachte) Abbildung zeigt, wie
eng die Spezifikationen miteinander verwoben sind:
Auch wird deutlich, wie groß und vor allem komplex das XML-Universum mittlerweile geworden ist. Die XML-Spezifikation selbst ist hier nur ein kleiner, wenn auch wesentlicher Teil. Doch XML alleine ist nichts wert. Der große Nutzen von XML erwächst erst aus der reichhaltigen Infrastruktur für die XML-Verarbeitung bestehend aus XML Schema, XSLT, XQuery, XPath und den vielen anderen "X-Akten".
Diese Plattform aus Beschreibungs-, Abfrage- und Programmiersprachen prägte die vergangenen Jahre der Softwareentwicklung, führte letztlich mit zu dem, was heute als Web 2.0 bezeichnet wird, und wird vor allem die kommenden Jahre in der IT-Branche entscheidend beeinflussen. XML wird im Mittelpunkt der Datenverarbeitung und insbesondere des Datenaustausches stehen.
Der Geheimbund
Um diesen Mittelpunkt gesellen sich eine Reihe von Spezifikationen, deren
Inhalt man zwar nicht in- und auswendig kennen muss, um mit der Entwicklung
Schritt zu halten, doch deren Zweck man zumindest kennen sollte, auch um nicht
Gefahr zu laufen, das Rad neu zu erfinden.
XML – sie legt die Basis. Die ursprüngliche Spezifikation beschreibt nur, wie Informationen mittels bestimmter Steuerzeichen ("spitze Klammer auf, spitze Klammer zu") strukturiert werden. Hinzu kommt eine einfache, für viele Zwecke zu einfache Beschreibungssprache für Inhaltsmodelle – die DTD, die Dokumenttyp-Definition.
XML InfoSet – sie verallgemeinert gerne. Dass ein Element Attribute und untergeordnete Elemente besitzen kann und ein Attribut aus einem Namen und einem Attribut bestehen muss, ist klar, aber keineswegs beschränkt auf die XML-Syntax ("spitze Klammern"). Dieses grundsätzliche Informationsmodell beschreibt XML-InfoSet-Spezifikation und ermöglicht damit beispielsweise XPath auf XML-Datenbanken statt XML-Dokumenten zu operieren.
XML Names – sie nimmt es ganz genau. Eine Bank ist eine Bank, in der man Geld bekommt, oder eine Bank, auf der man sitzt. Um eine Sitzbank in der Bank Ihres Vertrauens zu beschreiben, ohne dabei das eine mit dem anderen zu verwechseln, braucht es Namensräume: "{urn:finanzen}bank" und "{urn:moebel}bank" bezeichnen verschiedene Dinge.
XML Base – sie relativiert alles. Diese Spezifikation hilft, relative URLs in XML-Dokumenten in absolute URLs aufzulösen:
<part xml:base="base/uri/"> <link href="extern.xml"/> </part>
steht für:
<part> <link href="base/uri/extern.xml" /> </part>
XML ID – sie dient der eindeutigen Identifikation. Um XML-Elemente zu lokalisieren, gibt es XPath-Pfade: /account[1]/invoice[2]/item[3]. Oder eben XML ID: id("itm123"). Hierzu werden Elemente in einem XML-Dokument mit einem eindeutigen Bezeichner markiert:
<item xml:id="itm123">
XML Schema – sie spielt die Türsteherin. XML ohne XML Schema ist wie eine Programmiersprache ohne Typsystem. Mit XML Schema lassen sich eigene XML-Sprachen in einem XML-Schema beschreiben. Das XML-Schema-Dokument ist hierbei selbst eine XML-Datei. Damit ist eine maschinelle Validierbarkeit der XML-Daten möglich: ein validierender XML-Parser nutzt das oder die XML-Schemata zur Überprüfung der XML-Eingabedokumente. Die Fehlerüberprüfung ist somit nicht mehr über den gesamten Programmcode verteilt, sondern im XML-Schema-Dokument konzentriert.
XPath – sie macht sich auf die Suche. "Das Kind mit dem Namen xyz vom unbekannten Vater mit dem Attribut schön gleich bedingt." Solche und ähnliche Suchausdrücke lassen sich mit XPath formulieren: /*[schoen="bedingt"]/xyz. Das Ergebnis ist stets eine Liste von Werten (beispielsweise 1 oder "eins") oder Knoten (Elemente, Attribute, etc.). Die Liste kann auch mal leer sein oder nur einen Wert beziehungsweise Knoten umfassen. Der Haken an XPath: es bietet keine Freiheiten bei der Umgestaltung der Suchtreffer. Ein Ergebnisknoten kann also weder umbenannt noch kann sein Inhalt verändert werden. Dafür gibt es XQuery.
XQuery – sie sammelt Daten. XQuery ist SQL für XML und XQuery ist XPath 2.0 plus FLOWR. Letzteres steht für For-Each, Let, Order-By, Where und Return, die Schlüsselwörter einer XQuery-Abfrage, mithilfe derer sich ein oder mehrere XML-Quellen durchsuchen und sogar kombinieren lassen und die eine beliebige Filterung, Sortierung sowie Strukturierung der Ergebnisse ermöglichen.
XSLT – sie verwandelt Dokumente. Ebenfalls um die Gunst des Programmierers buhlt - bereits in ihrer zweiten Version - die Extensible Stylesheet Language & Transformations. Doch XQuery und XSLT sind keineswegs Konkurrenten, vielmehr ergänzen sie sich. XSLT dient der Umwandlung eines XML-Dokuments in anderes textbasiertes Format, das wiederum ein XML-basiertes Format sein kann. XQuery dient hingegen dem Sammeln, Filtern und Sortieren der Daten. Es gibt eine ganze Reihe weiterer Unterschiede zwischen den beiden Giganten – Fortsetzung folgt.
XPointer - sie zeigt auf andere. XPointer liegt irgendwo zwischen XPath und XLink beziehungsweise XInclude. XPath war für XLink und XInclude (siehe nächster Abschnitt) zu wenig und statt XPath zu erweitern, entschloss man sich zu XPointer, das sowohl von XLink als auch XInclude verwendet wird. XPointer erweitert XPath unter anderem um Möglichkeiten des Zeichenfolgenvergleichs.
XInclude – sie ist einnehmend. Die XML Inclusions, so der volle Name der Spezifikation, ermöglichen es, ein XML-Dokument auf mehrere XML-Dateien zu verteilen beziehungsweise Daten aus einer XML-Datei zwischen mehreren XML-Dokumenten zu teilen. Hierfür verweist ein spezielles include-Element mittels XPointer auf die Daten und ein XInclude-konformer XML-Parser ersetzt das include-Element beim Einlesen durch die jeweiligen Daten.
XLink – sie vernetzt Ressourcen. Eine andere Möglichkeit auf externe Daten zu verweisen, die in dem Fall auch binärer Natur sein dürfen, bietet XLink. XLink orientiert sich an dem a-Element beziehungsweise dem href-Attribut aus HTML und erlaubt es, die Verknüpfungen zwischen XML-Dokumenten untereinander sowie mit beliebig anderen Dateien detailliert zu beschreiben.
XProc – sie bringt alles zusammen. Schließlich soll die noch in Arbeit befindliche Spezifikation "XProc – An XML Pipeline Language" die verschiedenen Spezifikationen zusammenbringen. Mittels XProc lassen sich Verarbeitungsprozesse für XML-Dokumente definieren:
Von Fall zu Fall
Zu wissen, wann welches dieser Werkzeuge
seine Stärken ausspielt und wo ein Werkzeug eher Schwächen hat, erfordert
Erfahrung oder die passende Literatur, wie
zum Beispiel Naked XML. In diesem Sinne, bis in
vierzehn Tagen.
Ihr Martin Szugat
Martin Szugat kennt und nutzt sie alle – die Spezifikationen aus der XML-Familie. Über den Familienclan berichtet er regelmäßig in Naked XML, auf aboutxml.de und im dot.net magazin.




