XPath und XPointer


XPath

Tiger

 
 

Verweise auf Teile/Parts von XML Dokumenten (als Baum von Knoten betrachtet). Identifikation von Parts durch Vergleich von Zeichenketten.

Wird in XSLT und XPointer zur Spezifikation von Fragmenten verwendet. Diese definieren auch den Kontext in dem die XPath Ausdrücke ausgewertet werden.

Aufbau eines Pfadbestandteils

achse::knotentest[prädikat]

Beispiel

child::para[position()=7]

http://host/pfad/resource#xpointer(child::para[position()=7])

Komposition von Pfaden durch Pfadbestandteile, die durch / getrennt werden.

Achsen

XPath Achsen
XPath Achsen, Quelle Crane Softwrights, 2001

ancestor, descendant, following, preceding und self Partitionieren die Menge aller Knoten eines Dokuments.

Knoten-Tests

Beispiel: alle para Element-Knoten

child::para

Beispiel: das href Attribut des Knotens

attribute::href

Beispiel: alle Textknoten

child::text()

Prädikate

Beispiel: der 7. Knoten

[ position() = 7 ]

Funktionen

Abkürzungen

Zur Vereinfachung gibt es eine ganze Reihe von kompakteren Bezeichungen der Pfadbestandteile.

Beispiele siehe Abschnitt JAXP


XPointer

Adler

 
 

Verweise auf Teile/Fragmente von XML Dokumenten. Fragmente sind einzelne Punkte/Objekte/Knoten und zusammenhängende Bereiche von Punkten. Identifikation von Fragmenten durch Vergleich von Zeichenketten.

W3C Recommendation seit März 2003 in drei Teilen:

Steht in enger Beziehung zu DOM. Baut auf XPath auf. Wird zusammen mit XLink zur Definition von XML Links benötigt.

URL Aufbau mit XPointer
service://host/pfad/resource#xpointer-expr
service://host/pfad/resource|xpointer-expr

dabei ist xpointer-expr:
html-name
oder xpointer( xpath-expr )
oder xpointer( xpath-expr to xpath-expr )
oder element( elem-id / seq-expr )
oder xmlns(ns=url)

Beispiele

#intro

#xpointer(id("intro"))

#xpointer(//*[@id="intro"])

#xmlns(h=urlh) xmlns(x=urlx) xpointer(h:elem/x:elem)

#element(intro/2/1)

Z.B. element(intro/2/1) selektiert ausgehend von einem Element mit der Id "intro", das 2. Kind und davon das 1. Kind.

Erweiterungen gegenüber XPath

neue Typen point (ein Knoten oder ein Zeichen einer Zeichenkette) und range ( begin-expr to end-expr ) und einige dazu gehörige Funktionen, z.B. point() und range(...).

Beispiele

xpointer(
    id("sec2.1")/descendant::P[last()] to 
    id("sec2.2")/descendant::P[first()]
)

Ausblick

Xpointer wird noch von keinem Browser oder Web-Server unterstützt (Stand Mai 2005). Es gibt eine Reihe von experimentellen Implementierungen (siehe die XPointer Seiten des W3C).

 


© Universität Mannheim, Rechenzentrum, 1998-2007.

Heinz Kredel

Last modified: Sun Jan 28 13:22:20 CET 2007