XSLT: XPath


... [ Seminar XML und Haskell ] ... [ XSLT ] ... [ Templates ] ...

Übersicht: XPath


XPath-Ausdrücke

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() -
Nach oben

Location-Paths

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:

Nach oben

... [ Seminar XML und Haskell ] ... [ XSLT ] ... [ Templates ] ...