XPath-Operatoren

Alle von XPath definierten Operatoren sind hier aufgelistet.

Mathematische Operatoren  
 
+ (plus)
Addiert zwei Zahlen.

- (minus)
Subtrahiert eine Zahl von einer andern.

* (Multiplikation)
Multipliziert eine Zahl mit einer andern.

div
Führt eine Gleitkommadivision zwischen zwei Zahlen durch.

mod
Gibt den Gleitkommarest einer Division zurück.

Boolesche Operatoren  
 
=
Prüft, ob zwei Ausdrücke gleich sind.

<
Prüft, ob der erste Ausdruck kleiner ist als der zweite. Innerhalb eines Attributs muss dieser Operator mit & lt; kodiert werden.

< =
Prüft, ob der erste Ausdruck kleiner oder gleich dem zweiten ist. Innerhalb eines Attributs muss dieser Operator mit & lt;= kodiert werden.

>
Prüft, ob der erste Ausdruck größer ist als der zweite. Innerhalb eines Attributs kann dieser Operator mit & gt; kodiert werden.

> =
Prüft, ob der erste Ausdruck größer oder gleich dem zweiten ist. Innerhalb eines Attributs kann dieser Operator mit & gt;= kodiert werden.

!=
Prüft, ob zwei Ausdrücke ungleich sind.

and
Prüft, ob sowohl der erste als auch der zweite Ausdruck true sind. Ist der erste Ausdruck false , wird der zweite erst gar nicht ausgewertet.

or
Prüft, ob entweder der erste oder der zweite Ausdruck true sind. Ist der erste Ausdruck true , wird der zweite erst gar nicht ausgewertet.

Werte verschiedener Datentypen vergleichen

Für die ersten sechs Booleschen Operatoren ist der Vergleich von Werten verschiedener Datentypen kompliziert. Die verschiedenen Möglichkeiten sollen an dieser Stelle erläutert werden:

Wenn beide Objekte Boolesche Werte sind,
sind sie gleich, wenn sie denselben Wert haben. Bei Kleiner-als- und Größer-als-Vergleichen wird false als der kleinere Wert gegenüber true betrachtet (der Funktionsaufruf number(false()) liefert den Wert 0 , während number(true()) den Wert 1 liefert).

Wenn beide Objekte Zahlen sind,
funktionieren die Operatoren wie erwartet.

Wenn beide Objekte Strings sind,
sind sie gleich, wenn ihre Unicode-Zeichen identisch sind. Bei Kleiner-als- und Größer-als-Vergleichen werden die Zeichencodes verglichen.

Wenn kein Objekt eine Knotenmenge ist und der Operator = oder != ist,
dann werden die beiden Objekte in den gleichen Objekttyp konvertiert und der Vergleich funktioniert wie oben beschrieben. Ist eins der Objekte ein Boolescher Wert, werden die Objekte in Boolesche Werte konvertiert (wie beim Aufruf der Funktion boolean() ). Handelt es sich bei keinem der Objekte um einen Booleschen Wert, wird als Nächstes eine Konvertierung in eine Zahl versucht. Ist eins der Objekte eine Zahl, werden die Objekte in numerische Werte konvertiert (wie beim Aufruf der Funktion number() ). Andernfalls werden alle Objekte in Strings konvertiert (wie beim Aufruf der Funktion string() ).

Wenn kein Objekt eine Knotenmenge ist und der Operator < , > oder > = ist,
werden die Objekte in Zahlen konvertiert und dann verglichen.

Wenn eines oder beide Objekte Knotenmengen sind,
dann wird's kompliziert. Wenn beide Objekte Knotenmengen sind, ist ein Vergleich dann true, wenn der String-Wert von mindestens einem Knoten in der ersten Knotenmenge gleich dem String-Wert von mindestens einem Knoten in der zweiten Knotenmenge ist. Ist ein Objekt eine Knotenmenge und das andere eine Zahl, ein String oder ein Boolescher Wert, so ist der Vergleich true, wenn es mindestens einen Knoten in der Knotenmenge gibt, dessen numerischer, String- oder Boolescher Wert gleich dieser Zahl, diesem String oder diesem Booleschen Wert ist.

Audrucksoperatoren  
 
/
Der Schritt-Operator, der dazu dient, die Schritte in einem Lokationspfad voneinander zu trennen. Beginnt ein XPath-Ausdruck mit / , repräsentiert er die Wurzel des Dokuments.

//
Die Kurzform für die Achse descendant-or-self .

.
Die Kurzform für die Achse self .

..
Die Kurzform für die Achse parent .

@
Die Kurzform für die Achse attribute .

|
Der Vereinigungsoperator. Das Attribut match im Element < xsl:template match= " a|b " > beispielsweise entspricht allen < a > - und < b > -Elementen.

*
Ein Platzhalter, der jeden Knoten des Hauptknotentyps repräsentiert. child::* wählt alle Elemente aus, die den Kontextknoten untergeordnet sind, attribute::* wählt alle Attribute des Kontextknoten aus, usw. Die Kurzform * wählt alle Elemente aus, die dem Kontextknoten untergeordnet sind, und @* wählt alle Attribute des Kontextknoten aus. Beachten Sie den Unterschied zwischen dem Platzhalteroperator und dem Knotentest node() , der jeden Knoten, unabhängig von seinem Typ, beschreibt.

[]
Der Prädikatoperator, der einen Prädikatausdruck umschließt, der eine Gruppe von Knoten filtert.

$
Der Variablenoperator, der ein bestimmtes Symbol als Variablennamen kennzeichnet.