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
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"])
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