[/]schritt(/schritt)*
Die Verarbeitungsweise ist ähnlich wie bei Pfaden im Dateisystem:
achse::typ([prädikat])*
achse
gibt dabei das Verhältnis der gewünschten Knoten zum Kontextknoten an. Mögliche Werte sind:
child |
Alle direkten Nachkommen des Knotens, aber keine Attribute. |
descendant |
Alle Nachkommen des Knotens, aber keine Attribute. |
descendant-or-self |
Alle Nachkommen des Knotens, inklusive er selbst, aber keine Attribute. |
attribute |
Alle Attribute (außer Namespaces), die direkte Nachkommen des Knotens sind. |
namespace |
Alle Namespace-Attribute, die direkte Nachkommen des Knotens sind. |
parent |
Den Vater des aktuellen Knotens. |
ancestor |
Alle Väter des Knotens. |
ancestor-or-self |
Alle Vorfahren des Knotens, inklusive er selbst. |
following-sibling |
Den folgenden Bruder. |
preceding-sibling |
Den vorhergehenden Bruder. |
following |
Alle folgenden Knoten, die keine Nachkommen des Knotens sind. |
preceding |
Alle vorhergehenden Knoten, die keine Nachkommen des Knotens sind. |
self |
Der aktuelle Knoten. |
Für jeden der durch achse
ausgewählten Knoten wird geprüft, ob er vom angegebenen typ
ist. Mögliche Werte sind:
* |
Alle Knoten vom typ der Achse. Der Achsentyp ist immer Element außer bei attribute und namespace . |
namespace:* |
Alle Knoten im Namespace namespace |
namespace: typ |
Alle Knoten mit Namen namespace:typ |
typ | Alle Knoten mit Namen typ und NULL-Namespace |
text() |
Alle Textknoten |
comment() |
Alle Kommentarknoten |
processing-instruction() |
Alle Processing-Instruction-Knoten |
processing-instruction( name) |
Alle Processing-Instruction-Knoten mit Expanded-Name name |
node() |
Alle Knoten |
Für alle Knoten, die jetzt noch ausgewählt sind, werden (falls vorhanden) die prädikate
ausgewertet.
Die Prädikate sind XPath-Ausdrücke, deren genauer Aufbau unten erläutert wird.
Ein Knoten bleibt ausgewählt, wenn keine Prädikate angegeben sind oder für jedes Prädikat gilt:
Jeder der so ausgewählten Knoten dient als Ausgangsknoten für den folgenden Schritt im Location Path.
Für häufig gebrauchte Schritte sind Abkürzungen definiert:
child:: |
child:: kann weggelassen werden, text() bedeutet dasselbe wie child::text() |
|
attribute:: |
@ |
attribute:: kann durch @ abgekürzt werden; @href bedeutet dasselbe wie attribute::href |
self::node() |
. |
Den aktuellen Knoten kann man mit . bezeichnen. |
parent::node() |
.. |
Den übergeordneten Knoten kann man mit .. referenzieren |
/descendant-or-self::node()/ |
// |
Einen Knoten sowie alle seine Nachkommen wählt man mit einem einfachen // aus. |
text()
child::text()
/html
/child::html
//table
/descendant-or-self::node()/child::table
../table/@width
/parent::node()/child::table/attribute::width
following-sibling::*/tr/td
following-sibling::*/child::tr/child::td
node-set | Eine (ggf. auch leere) Menge von Knoten |
boolean | Ein boolescher Wert (TRUE oder FALSE) |
number | Eine Fließkommazahl |
string | Ein string |
In Ausdrücken dürfen folgende Elemente verwendet werden:
Element | Beispiel | Typ |
---|---|---|
Klammerung | ( ... ) | |
Strings | "text" 'text' | string |
Zahlen | 1 1.2 .1 | number |
Arithmetik | + - * div mod
| number |
Logik | <= < >= > = != and or |
boolean |
Location-Paths | /schritt1/schritt2 | node-set |
Vereiningungsmenge | location-path | location-path |
node-set |
Variablen | $ Variablenname |
(Typ der Variablen) |
Funktionsaufrufe | funktion() | (Typ der Funktion) |
Typ | Aufruf | Beschreibung |
---|---|---|
node-set-Funktionen | ||
number | last() | Gibt die Nummer des letzten Knotens (= Anzahl der Knoten) im Kontext zurück |
number | position() | Gibt die Nummer des aktuellen Knotens im Kontext zurück |
number | count(node-set) | Gibt die Anzahl der Knoten im Argument zurück |
node-set | id(object) | Gibt das Element mit der Unique-ID object zurück |
string | local-name(node-set?) | Liefert den lokalen Namen eines Knotens |
string | namespace-uri(node-set?) | Liefert den namespace-URI eines Knotens |
string | name() | Gibt den kompletten Namen eines Knotens zurück |
string-Funktionen | ||
string | string(object?) | Wandelt das Argument in einen string |
string | concat(string, string, string*) | Gibt die Aneinanderreihung der Argumente zurück |
boolean | starts-with(string, string) | Gibt TRUE zurück, wenn der erste string mit dem zweiten beginnt |
boolean | contains(string, string) | Gibt TRUE zurück, wenn der zweite string im ersten enthalten ist |
string | substring-before(string, string) | Gibt den string zurück, der vor dem ersten Auftreten des zweiten im ersten string liegt. |
string | substring-after(string, string) | Gibt den string zurück, der hinter dem ersten Auftreten des zweiten im ersten string liegt. |
string | substring(string, number, number?) | Gibt den string mit länge der zweiten Zahl zurück, der an der durch die erste nummer angegebenen position beginnt. |
number | string-length(string?) | Gibt die Länge des strings zurück. |
string | normalize-space(string?) | Entfernt Whitespaces am Anfang un Ende, sowie aufeinanderfolgende Whitespaces. |
string | translate(string, string, string) | Ersetzt alle Vorkommen des zweiten strings im ersten durch den dritten |
boolean-Funktionen | ||
boolean | boolean(object) | Wandelt das Argument in ein boolean |
boolean | not(boolean) | Führt eine not-Operation auf dem Argument aus |
boolean | true() | Ergibt TRUE |
boolean | false() | Ergibt FALSE |
boolean | lang(string) | Gibt TRUE zurück, wenn die Sprache des Kontextknotens die durch string angegebene ist |
number-Funktionen | ||
number | number(object) | Wandelt das Argument in eine Zahl |
number | sum(node-set) | Summiert alle in Zahlen konvertierten Knoten |
number | floor(number) | Gibt die ganze Zahl zurück, die größer oder gleich dem Argument ist |
number | ceiling(number) | Gibt die ganze Zahl zurück, die kleiner oder gleich dem Argument ist |
number | round(number) | Rundet das Argument kaufmännisch |
/html/body/table[2]
/child::html/child::body/child::html[2]
//table[@width = "50%"]
/descendant-or-self::table[attribute::width = "50%"]
//td[position() != last()]
//ex:head
//*[local-name() = 'head' and namespace-uri() = 'http://www.example.org']