Die im vorigen Kapitel erwähnten Ausdrücke "*" und "node()" sind Teile der XPath-Sprache. Diese ermöglicht es, komplexe Ausdrücke zu formulieren und zu berechnen; Zuweisungen sind nicht möglich.
(Für eine ausführliche Beschreibung der XPath-Sprache siehe meine Ausarbeitung zum Seimnar im WS 2000)
XPath-Ausrücke verwenden die folgenden Datentypen:
| Boolean | Boolscher Wert (wahr/falsch) |
| Number | Fließkommazahl |
| String | Zeichenfolge |
| Nodeset | Eine Menge von Knoten |
In Ausdrücken können folgende Elemente verwendet werden:
| Element | Beispiel | Typ |
|---|---|---|
| Zahl | 1 2.3 .7 | Number |
| Text | "abcd" 'abcd' | String |
| Arithmetik | + - * div mod | Number |
| Logik / Vergleich | <= < > >= = != and or | Boolean |
| Location-Paths | /html/body//p | Nodeset |
| Vereinigungsmenge | | | Nodeset |
| Variablen | $var | - |
| Funktionen | true() | - |
Wichtig für die Auswahl von Knoten in XSLT ist natürlich der sogenannte Location-Path-Operator, da nur dieser in der Lage ist, ein Nodeset zurückzugeben.
Ein Location-Path ist wie folgt aufgebaut:
Absolut:
/verhältnis[prädikat]/verhältnis[prädikat]/....
Relativ:
verhältnis[prädikat]/verhältnis[prädikat]/....
verhältnis gibt dabei das Verhältnis der gesuchten Knoten zum aktuellen Knoten an. Beispiele:
| / | Der Wurzelknoten |
| . | Der aktuelle Knoten |
| .. | Der übergeordnete Knoten |
| @img | Alle Attribute mit Namen width |
| @* | Alle Attribute |
| img | Alle direkten Kindknoten mit Namen img |
| * | Alle direkten Kindknoten |
| /img | Alle Kindknoten mit Namen img (z. B. table//td) |
| /* | Alle Kindknoten (z. B. table//*) |
prädikat gibt optional einen XPath-Ausdruck an, der zu wahr ausgewertet werden muß.
/html/body/img[@width == 32]
wählt alle img-Elemente innerhalb des body-Elements aus, die ein width-Attribut mit dem Wert 32 haben. Der Location-Path wird dabei von links nach rechts ausgewertet:
Soll ermittelt werden, ob ein gegebener Knoten auf einen Location-Path
paßt, so wird der Location-Path von rechts nach links ausgewertet: