XPointer oder XML Pointer Language ist eine vom World Wide Web Consortium (W3C) entwickelte Anfragesprache, um Teile eines XML-Dokumentes zu adressieren. Es handelt sich dabei um eine Erweiterung der XPath-Spezifikation, mit der sich ebenfalls Teile eines XML-Dokumentes adressieren lassen.
XPointer ermöglicht es insbesondere, in einer URI auf Teile eines XML-Dokumentes zu verweisen. Nachdem die ursprüngliche XPointer-Definition nur zögerlich implementiert wurde, entschied sich das W3C, die Definition in mehrere Dokumente aufzuspalten.
Einfache Verweise
Einfache Verweise ähneln lokalen Links in HTML-Dokumenten. Sie verweisen auf XML-Elemente, die anhand einer ID identifiziert werden. Als Beispiel soll ein XLink dienen. Das „Rudolph“ ist der eigentliche XPointer. Der Link zeigt auf das Element mit der ID „Rudolph“ in der Datei „Brief.xml“:
xlink:href="Brief.xml#Rudolph"
Einfache Verweise gehören zur shorthand notation von XPointer und werden in XPointer-Framework spezifiziert. Dort werden auch die Grundlagen für komplexere XPointer in scheme-based notation geschaffen.
Das element()-Schema
Mit dem element()-Schema lassen sich Verweise auf bestimmte Kinder in der Baumstruktur eines XML-Dokumentes erstellen. Der XLink des folgenden Beispiels zeigt auf das 2. Unterelement des 1. (Wurzel)elements im XML-Dokument „index.xml“:
xlink:href="index.xml#element(/1/2)"
Das xpointer()-Schema
Beliebig komplexe Verweise auf Teile von XML-Dokumenten lassen sich mit dem xpointer()-Schema erstellen. Hierbei kann zur Adressierung der gewünschten Teile des Dokumentes ein XPath-Ausdruck verwendet werden. Darüber hinaus gibt es noch weitere Möglichkeiten, die in XPath nicht vorgesehen sind:
- Punkte vor oder nach XML-Strukturelementen (
start-point()
,end-point()
, …) - Bereiche zwischen XML-Strukturelementen (
range()
,range-to()
, …) - Ausgewählte Bereiche in Freitext (
string-range()
, …)
Das folgende Beispiel liefert das 1. bis 4. Element vom Typ „Seite“ innerhalb des Elements „MobyDick“ in der Datei „Bücherregal.xml“:
xlink:href="Bücherregal.xml#xpointer(/MobyDick/Seite[position()=1]/range-to(/MobyDick/Seite[4]))"
Der Text ab der Raute (#) ist wieder der eigentliche XPointer. In der scheme-based notation können beliebig viele XPointer-Ausdrücke hintereinander geschrieben werden. Ergebnis des Ausdrucks ist das Ergebnis des ersten Teilausdrucks, der ein Ergebnis liefert. Beispiel:
element(/1/4)xpointer(//Buch[4])
Weblinks
- XPointer-Framework Teil 1 der XPointer-Spezifikation – einfache Verweise
- XPointer element() Schema Teil 2 der XPointer-Spezifikation – element()-Schema
- XPointer xpointer() Schema Teil 3 der XPointer-Spezifikation – xpointer()-Schema
- XPointer xmlns() Schema Teil 4 der XPointer-Spezifikation – Namensräume
- XPointer-Einführung (deutsch)