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: