XPath-Standardfunktionen
Der Publisher unterstützt die folgenden XPath-Standardfunktionen. Daneben gibt es die Publisher-spezifischen Layoutfunktionen und selbstdefinierte Funktionen.
Zeichenketten
concat(<Wert>,<Wert>, ...)- Erzeugt einen neuen Text aus der Verkettung der Werte.
contains(<Heuhaufen>,<Nadel>)- Wahr, wenn
HeuhaufendieNadelenthält. Beispiel:contains('bana','na')ergibttrue(). starts-with(<String>, <String>)- Wahr, wenn die erste Zeichenkette mit der zweiten anfängt.
ends-with(<String>, <String>)- Wahr, wenn die erste Zeichenkette mit der zweiten endet.
substring(<Eingabe>,<Start>[,<Länge>])- Gibt einen Teil der Zeichenkette zurück.
substring('Goldfarb', 5, 3)gibtfarzurück.Startkann auch negativ sein (zählt vom Ende). substring-before(<String>,<String>)- Gibt den Teil der ersten Zeichenkette zurück, der vor der zweiten steht. Beispiel:
substring-before("tattoo", "attoo")ergibt"t". substring-after(<String>,<String>)- Gibt den Teil der ersten Zeichenkette zurück, der nach der zweiten steht. Beispiel:
substring-after("tattoo", "tat")ergibt"too". string-length(<String>)- Gibt die Länge der Zeichenkette zurück. Multibyte-UTF-8-Sequenzen werden als eine Position gezählt.
string-join(<Sequenz>, <Separator>)- Verbindet die Elemente der Sequenz mit dem Separator.
normalize-space(<Text>)- Entfernt führende und nachstehende Leerzeichen. Mehrfache Leerzeichen und Zeilenumbrüche werden durch ein einzelnes Leerzeichen ersetzt.
upper-case(<Text>)- Wandelt den Text in Großbuchstaben.
upper-case('Text')ergibtTEXT. lower-case(<Text>)- Wandelt den Text in Kleinbuchstaben.
lower-case('Text')ergibttext. translate(<Eingabe>,<Von>,<Nach>)- Ersetzt alle Zeichen in
Eingabe, die inVonvorkommen, durch das entsprechende Zeichen inNach. Beispiel:translate('banana','an','uo')ergibtbuouou. WennNachkürzer alsVonist, werden überzählige Zeichen gelöscht. matches(<Text>,<Regexp>[,<Flags>])- Prüft, ob der Text auf den regulären Ausdruck passt. Flags:
s,i,m(siehe XPath-Spezifikation). Beispiel:matches("banana", "^(.a)+$")ergibt wahr. replace(<Eingabe>,<Regexp>,<Ersetzung>)- Ersetzt alle Treffer des regulären Ausdrucks durch den Ersetzungstext. Beispiel:
replace('banana', 'a', 'o')ergibtbonono. Mit Gruppen:replace('W151TBH','^[A-Z]([0-9]+)[A-Z]+$', '$1')ergibt151. tokenize(<Eingabe>,<Regexp>)- Zerlegt die Eingabe anhand des regulären Ausdrucks in eine Sequenz von Zeichenketten. Beispiel:
tokenize("Go home, Jack!", "\W+")ergibt die Sequenz"Go", "home", "Jack", "". string(<Sequenz>)- Gibt den Textwert der Sequenz zurück.
codepoints-to-string(<Codepoints>)- Konvertiert eine Sequenz von Codepoints in eine Zeichenkette.
string-to-codepoints(<String>)- Konvertiert eine Zeichenkette in eine Sequenz von Codepoints.
Zahlen
number(<Wert>)- Konvertiert den Wert in eine Zahl. Falls nicht möglich, wird NaN zurückgegeben.
abs(<Zahl>)- Gibt den Absolutwert zurück.
abs(-1.34)ergibt1.34. ceiling(<Zahl>)- Rundet auf die nächsthöhere Ganzzahl.
ceiling(1.34)ergibt2. floor(<Zahl>)- Rundet auf die nächstniedrigere Ganzzahl.
floor(1.7)ergibt1. round(<Zahl>[,<Nachkommastellen>])- Rundet auf die angegebene Anzahl Nachkommastellen (Voreinstellung: 0).
round-half-to-even(<Zahl>[,<Nachkommastellen>])- Rundet kaufmännisch (Banker’s Rounding): bei .5 wird auf die nächste gerade Zahl gerundet.
format-number(<Zahl>, <Muster>)- Formatiert die Zahl nach dem Muster. Beispiel:
format-number(12345.67, '#,##0.00')ergibt12,345.67. max(<Sequenz>)- Gibt das Maximum zurück.
max((1.1, 2.2, 3.3))ergibt3.3. min(<Sequenz>)- Gibt das Minimum zurück.
min((1.1, 2.2, 3.3))ergibt1.1.
Boolesche Funktionen
true()- Gibt wahr zurück.
false()- Gibt falsch zurück.
not(<Wert>)- Negiert den Wahrheitswert.
not(true())ergibtfalse(). boolean(<Sequenz>)- Gibt den effektiven Booleschen Wert zurück.
empty(<Sequenz>)- Wahr, wenn die Sequenz leer ist (z.B. ein nicht vorhandenes Attribut oder Element).
Sequenzen und Knoten
count(<Knoten>)- Zählt die Kindelemente mit dem angegebenen Namen. Beispiel:
count(article). position()- Gibt die Position des aktuellen Datensatzes zurück.
last()- Gibt die Anzahl der gleichnamigen Geschwister-Elemente zurück.
distinct-values(<Sequenz>)- Gibt die eindeutigen Werte zurück.
distinct-values((1,2,2,3))ergibt(1,2,3). reverse(<Sequenz>)- Kehrt die Reihenfolge der Sequenz um.
local-name()- Gibt den Namen des aktuellen Knotens zurück (ohne Namensraum).
name()- Gibt den Namen des aktuellen Knotens zurück (mit Namensraum-Präfix).
namespace-uri([<Knotensequenz>])- Gibt den Namensraum-URI des ersten Knotens zurück.
root(<Element>)- Gibt das Wurzelelement zurück.
doc(<Dateiname>)- Öffnet die Datei und gibt den Inhalt als XML-Baum zurück.
serialize(<Knoten>)- Gibt die XML-Serialisierung des Knotens als Zeichenkette zurück. Beispiel: Wenn das aktuelle Element
<item color="red">Text</item>ist, ergibtserialize(.)die Zeichenkette<item color="red">Text</item>. Sonderzeichen werden korrekt escaped (&,<,>,"). unparsed-text(<Dateiname>)- Gibt den Inhalt der Datei als uninterpretierten Text zurück.
Arrays
Alle Array-Funktionen befinden sich im Namensraum array: (http://www.w3.org/2005/xpath-functions/array).
Dieser Namensraum muss im Wurzelelement deklariert werden: xmlns:array="http://www.w3.org/2005/xpath-functions/array".
Siehe auch Arrays und Maps.
array:size(<Array>)- Anzahl der Members.
array:get(<Array>, <Position>)- Member an der Position (1-basiert).
array:append(<Array>, <Wert>)- Neues Array mit angehängtem Member.
array:put(<Array>, <Position>, <Wert>)- Neues Array mit ersetztem Member.
array:remove(<Array>, <Position>)- Neues Array ohne das Member an der Position.
array:subarray(<Array>, <Start>[, <Länge>])- Teilarray ab der Startposition.
array:join(<Array-Sequenz>)- Verbindet mehrere Arrays zu einem.
array:flatten(<Array>)- Löst verschachtelte Arrays rekursiv auf und gibt eine flache Sequenz zurück.
Maps
Alle Map-Funktionen befinden sich im Namensraum map: (http://www.w3.org/2005/xpath-functions/map).
Dieser Namensraum muss im Wurzelelement deklariert werden: xmlns:map="http://www.w3.org/2005/xpath-functions/map".
Siehe auch Arrays und Maps.
map:size(<Map>)- Anzahl der Einträge.
map:keys(<Map>)- Sequenz der Schlüssel.
map:get(<Map>, <Schlüssel>)- Wert zum Schlüssel (leere Sequenz, wenn nicht vorhanden).
map:contains(<Map>, <Schlüssel>)true()wenn der Schlüssel existiert.map:put(<Map>, <Schlüssel>, <Wert>)- Neue Map mit eingefügtem oder ersetztem Eintrag.
map:remove(<Map>, <Schlüssel>)- Neue Map ohne den Eintrag.
map:merge(<Map-Sequenz>)- Führt mehrere Maps zusammen (letzte Werte gewinnen).
map:entry(<Schlüssel>, <Wert>)- Map mit einem einzigen Eintrag.
