XPath
XPointer

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 (axis): definieren Folgen von Kandidaten zur Auswahl
Prädikate (predicates): Boolesche Bedingungen zur Einschränkung der Auswahl
Funktionen: generieren von (neuen) Kandidaten zur Auswahl
child Kindknoten des aktuellen Knotens
descendent Nachfahren
parent Elternknoten
ancestor Vorfahren
preceding Vorgänger Knoten
following Nachfolger Knoten
preceding-sibling Vorgänger Geschwister-Knoten
following-sibling Nachfolger Geschwister-Knoten
attribute Attributknoten
namespace Namensraum-Knoten
self der Knoten selbst
descendant-or-self
ancestor-or-self
ancestor, descendant,
following, preceding und self
Partitionieren die Menge aller Knoten eines Dokuments.
achse::* zur Selektion aller Knoten
achse::name zur Selektion bestimmter Elemente
oder Attribute
achse::funktion() zur Selektion von Knoten mit
bestimmten Eigenschaften.
Beispiel: alle para Element-Knoten
child::para
Beispiel: das href Attribut des Knotens
attribute::href
Beispiel: alle Textknoten
child::text()
[ test-ausdruck ]
Selektiert Knoten, für die die Auswertung des Test-Ausdrucks
"wahr" ergibt
Ausdrucksbedeutung von axis::node[test]
ist (axis::node)[test]
und nicht axis::(node[test])
der Test-Ausdruck darf arithmetische (+, -, *, div, mod)
und boolesche (or, and, !, <, >, <=, >=, =, !=)
Operatoren enthalten.
Schreibweise: < für <
Beispiel: der 7. Knoten
[ position() = 7 ]
last() Position des letzten Elements
position() aktuelle Position des Elements
count(node-set) Anzahl der Elemente
id(object) Element, das durch Objekt Identifiziert wird
name(node-set) Name der Selektion
string(object) Konvertiert das Objekt in Zeichenkette
concat(string1, string2 ,...) Zeichenketten Verbindung
starts-with(string1, string2)
contains(string1, string2)
substring(string, position, length)
string-length(string)
translate(string1, string2, string3)
boolean(object)
not(boolean)
number(object)
round(number)
Zur Vereinfachung gibt es eine ganze Reihe von kompakteren Bezeichungen der Pfadbestandteile.
para für child::para
* für child::*
text() für child::text()
@href für attribute::href
@* für attribute::*
[ 7 ] für *::*[position()=7]
chapter//para
für child::chapter/descendant::para
chapter/section
für child::chapter/child::section
//
für /descendant-or-self::node()/

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:
XPointer Framework
XPointer element() Scheme
XPointer xmlns() Scheme
XPointer xpointer() Scheme ist noch Working Draft
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.
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()]
)
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-2005.
Heinz KredelLast modified: Wed May 4 10:58:38 CEST 2005