Homepage-Webhilfe Event-Banner

Funktionen

In XPath gibt es, wie den meisten vor allem aus Programmier- und Skriptsprachen bekannt sein wird, Funktionen. Diese Funktionen können in Prädikaten oder auch direkt in XSLT verwendet werden. Funktionen werden dabei mit dem Funktionsnamen, gefolgt von einem runden Klammernpaar, angegeben. Innerhalb des Klammernpaars können sogenannte Parameter übergeben werden. Die Parameter (auch Argumente genannt) werden dabei durch ein Komma getrennt. Die Anzahl der Parameter und deren Bedeutung unterscheiden sich von Funktion zu Funktion. XPath-Funktionen geben grundsätzlich einen Wert zurück. Die Funktionen von XPath lassen sich grob in 4 Gruppen teilen: Positions-Funktionen, Logik-Funktionen, Zahlen-Funktionen und Zeichenketten-Funktionen.


Positions-Funktionen erlauben es, mit Hilfe von Positionsangaben (also dem Index) zu arbeiten. Die Funktion position() gibt die Positionsnummer des aktuellen Knotens zurück. Vorher hatten wir z. B. folgendes Beispiel:

/adressbuch/kontakt[1]

In der Tat ist das Prädikat [1] eigentlich nur eine verkürzte Schreibweise. Die ausführliche Notation sieht wie folgt aus:

/adressbuch/kontakt[position() = 1]

Die Funktion last() erlaubt es, die Positionsnummer des letzten Knotens zu ermitteln. Die Selektierung des letzten kontakt-Elements wäre mittels des folgenden Syntax möglich:

/adressbuch/kontakt[position() = last()]

Auch dies lässt sich wieder verkürzt darstellen:

/adressbuch/kontakt[last()]

Mit der Funktion count() können Sie die Anzahl der enthaltenen Knoten zu einem Knotentest bestimmen. Als Parameter übergeben Sie den Knotentest. Der folgende Ausdruck zählt die Anzahl der kontakt-Elemente:

count(/adressbuch/kontakt)

In der Logik gibt es den Datentyp bool (auch boolean genannt), welcher einen Wahrheitswert speichern kann: true (wahr) oder false (unwahr). Mit den Funktionen true() und false() ist es möglich, einen solchen booleschen Wert zu erzeugen. Ein boolescher Wert kann mit der Funktion not() negiert (also umgekehrt) werden. Aus true wird dann false und aus false wird true. Als Parameter wird der zu negierende Wert übergeben. Eine weitere Funktion ist boolean(). Die Funktion boolean() dient dazu, einen Ausdruck mit true oder false zu bewerten. Dieser Ausdruck muss als Parameter übergeben werden. Hier kann z. B. auch einfach nur ein Knotenname angegeben werden, um zu prüfen, ob dieser existiert:

boolean(/adressbuch/kontakt[1]/name)

Die Funktion number() erlaubt es, einen Wert (in der Regel eine Zeichenkette) in eine Zahl umzuwandeln. Scheitert dieser Vorgang, so wird NaN (Not A Number) zurückgegeben. Der „umzuwandelnde“ Wert kann dabei als Parameter übergeben werden. Wird dieser weggelassen, so wird der Inhalt des aktuellen Knotens verwendet. Nun gibt es noch drei weitere Funktionen, die in Verbindung mit Gleitkommazahlen verwendet werden: ceiling() um die Zahl auf die nächstgrößere Ganzzahl aufzurunden, floor() um die Zahl auf die nächstkleinere Ganzzahl abzurunden und round() um eine kaufmännische Rundung durchzuführen. Eine weitere interessante Funktion ist sum(). Hier wird ein ganz normaler XPath-Ausdruck übergeben und die Summe aller Knoten-Werte zurückgegeben:

sum(/adressbuch/kontakt/@alter)

Als Zeichenkette bezeichnet man eine Folge von Zeichen. Eine Zeichenkette wird (wenn Sie direkt in XSL-Dokumenten verwendet werden) innerhalb einfacher Anführungszeichen notiert und kann dabei aus 0, 1 oder mehreren Zeichen bestehen. Wie es für Zahlen die Funktion number() gibt, um Ausdrücke in Zahlen umzuwandeln, gibt es für Zeichenketten die Funktion string(), um einen Ausdruck (i. d. R. eine Zahl) in eine Zeichenkette umzuwandeln. Die Funktion string-length() erlaubt es, die Länge einer Zeichenkette zu ermitteln. Die Zeichenkette, von welcher die Länge ermittelt werden soll, kann als Parameter übergeben werden. Wird der Parameter weggelassen, so wird der Inhalt des aktuellen Knotens verwendet.

Die Funktion concat() ermöglicht es, eine beliebige Anzahl an Zeichenketten aneinander zu reihen. Dabei wird jede Zeichenkette als Parameter übergeben. Dies könnte z. B. wie folgt aussehen:

concat(/adressbuch/kontakt[0]/nachname, ',', /adressbuch/kontakt[0]/vorname)

Die Funktion contains() prüft, ob eine bestimmte Zeichenkette (1. Parameter) eine bestimmte Teilzeichenkette (2. Parameter) enthält. Die Funktion starts-with() prüft hingegen, ob eine Zeichenkette mit der angegebenen Teilzeichenkette beginnt.

Nun gibt es noch drei weitere Funktionen, mit welchen aus einer Zeichenkette Teilzeichenketten extrahiert werden: substring(), substring-after() und substring-before(). Alle Funktionen werden dabei als erster Parameter die (Quell-)Zeichenkette übergeben. Der Funktion substring() wird des Weiteren die Startposition sowie optional die Anzahl an Zeichen übergeben. Die Funktionen substring-after() und substring-before() extrahiert die Zeichenkette nach bzw. vor einer angegebenen Zeichenkette. Sinnvoll ist dies z. B., um den Namen oder den Wert bei einem INI-Datei ähnlichen Format (Name=Wert) zu extrahieren. Im folgenden Beispiel wird aus einem Namensfeld der Vor- und Nachname extrahiert:

substring-after(/adressbuch/kontakt[1]/name, ' ')
substring-before(/adressbuch/kontakt[1]/name, ' ')
Um unsere Webseite für Sie optimal zu gestalten und fortlaufend verbessern zu können, verwenden wir Cookies. Durch die weitere Nutzung der Webseite stimmen Sie der Verwendung von Cookies zu. Weitere Informationen OK