XML Path Language (XPath)

XPath ist eine Sprache zur Selektion von Teilmengen innerhalb eines XML-Dokuments.

Beispiele

/
Dokumentwurzel
/article/@author
Autor-Attribut des Artikel-Elements
//footnote
Alle Fußnoten-Elemente im gesamten Dokument

XPath Kontext

Folgende Achsen teilen das Dokument in disjunkte Teilmengen:

Disjunkte Teilmengen

XPath Syntax

Nicht-Terminal Terminale Kommentar
expression =location-path
location-path =absolute-location / relative-location
absolute-location =/ [ relative-location ]
relative-location =*(relative-location /) step
step =[ axis-specifier ] node-test *( predicate )
axis-specifier =axis-name ::
/@ entspricht "attribute::"
/. entspricht "self::node()"
/.. entspricht "parent::node()"
/// entspricht "/descendant-or-self::node()/"
axis-name =ancestor Alle direkten Vorfahren
/ancestor-or-self Alle direkten Vorfahren inklusive Kontextknoten
/attribute Alle Attribute (Attribute sind KEINE Kinder)
/child Direkte Kindknoten, aber nichr die
/descendant Alle Nachfahren
/descendant-or-self Alle Nachfahren inklusive Kontextknoten
/following Alle Element ab dem Kontextknoten
/following-sibling Ältere Geschwister
/namespace
/parent Der Elternknoten
/preceding Alle Element bis zum Kontextknoten außer den direkten Vorfahren
/preceding-sibling Jüngere Geschwister
/self Nur der Kontextknoten
node-test =name-test
/node-type ()
/processing-instruction ( literal )
name-test =*CHAR Nur Knoten mit diesem Namen
node-type =text Nur Textknoten
/comment Nur Kommentare
/node Jeden der 7 Knotentypen
predicate =[ predicate-expr]
predicate-expr =number Index in der ausgewählten Knotenmenge
/location-step rel-op qstring Vergleich
/function
function =nodeset-function / string-function / boolean-function
nodeset-function =last () number: Anzahl der Konten im Kontext
/position () number: Index des aktuellen Knotens
/count ( node-set ) number: Anzahl der Knoten
/id ( object ) node-set:
/local-name ( node-set ) string
/namespace-uri ( node-set ) string
/name ( node-set ) string
string-function =string ( object ) string
/concat ( string *(, string) ) string
/starts-with ( string , string ) boolean
/contains ( string , string ) boolean
/substring-before ( string , string ) string
/substring-after ( string , string ) string
/substring ( string , number , number )string
/string-length ( string ) number
/normalize-space ( string ) string
/translate ( string , string , string )string
boolean-function =boolean ( object ) boolean
/not ( boolean ) boolean
/true () boolean
/false () boolean
/lang ( string ) boolean
numeric-function =number ( object ) number
/sum ( node-set ) number
/ceiling ( number ) number
/floor ( number ) number
/round ( number ) number
rel-op =< / > / <= / >= / = / != / and / or
arith-op =+ / - / * / div / mod
number =*DIGIT
qstring =DQUOTE *CHAR DQUOTE

XPointer

XPointer bieten einen standartisierte Syntax, um in URIs auf Teile innerhalb eines XML-Dokuments zu verweisen. Die Funktion range erweitert XPath um die Möglichkeit, Substrings in Textknoten zu identifizieren.

Nicht-Terminal Terminale Kommentar
xpointer =xpointer (xpath *range) Element mit allen Kinden
range =range (xpath) Element mit umgebenden Elementen
/range-inside (xpath) Element ohne umgebende Elemente
/range-to (xpath)
/string-range (xpath, string, first, last)

Literatur