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

Abkrzungen

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


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 )

Beispiele

#intro

#xpointer(id("intro"))

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

Erweiterungen gegenber 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()]
)

 


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

Heinz Kredel
Last modified: Mon May 26 21:51:15 CEST 2003