fn:string-join
(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 5.)
A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z
Kategorie: Stringfunktionen – Manipulation
Herkunft: XPath 2.0
Rückgabewert: Ein String xs:string; die zusammengefassten Stringwerte der Items der Eingabesequenz mit jeweils dazwischen eingeschobenen Separatorstring, der als zweites Argument übergeben wird.
Aufruf/Argumente:
fn:string-join($eingabesequenz, $separatorstring)
$eingabesequenz:
Obligatorisch. Eine Sequenz aus einer beliebigen Anzahl Items vom Typ xs:string. Die Eingabesequenz darf leer sein – in diesem Fall gibt die Funktion den leeren String zurück. Handelt es sich bei einem Item der Argument-Sequenz nicht um einen String, so wird ein Typfehler gemeldet. Die leere Sequenz ist als Item zugelassen und wird wie der leere String behandelt.
$separatorstring:
Obligatorisch. Ein String xs:string, der zwischen den Stringwerten der Items der Eingabesequenz jeweils als Separator eingeschoben wird. Der String darf leer sein. Wird er als Literal übergeben, so müssen in diesem Fall die Stringbegrenzer dennoch als Argument vorhanden sein. Die leere Sequenz darf an dieser Stelle nicht übergeben werden.
Verwendungszweck:
Die Funktion fn:string-join() entspricht in ihrer Wirkung der Funktion fn:concat(), mit der zusätzlichen Option, zwischen die zusammenzufassenden Stringwerte der Eingabesequenz jeweils einen Separatorstring einzuschieben.
Wird der leere String als Separator übergeben, so ist die Wirkung der Funktion identisch zu fn:concat() – die Stringwerte der Items werden unmittelbar miteinander verkettet. Die leere Sequenz ist als Argument für den Separator hingegen verboten.
Wird der Funktion die leere Sequenz übergeben, so gibt sie – ungeachtet des als Separator übergebenen Wertes – stets den leeren String zurück.
Erhält die Funktion als erstes Argument eine Singleton-Sequenz in Form eines einzelnen Strings xs:string, so wird dieser unverändert ausgegeben. Eine Verkettung mit dem Separatorargument findet in diesem Fall nicht statt.
Beispiele:
Beispiel 1 – Leerzeichen als Separator
fn:string-join(('Dies', 'ist', 'ein', 'Beispiel!'), " ")
ergibt "Dies ist ein Beispiel!"
Der Separator wird zwischen den Stringitems der Eingangssequenz jeweils eingeschoben und verkettet. An das letzte Item der Sequenz wird er nicht zusätzlich angefügt: Wird kein oder nur ein Item übergeben, so spielt der Separator deshalb keine Rolle; siehe Beispiele 3 und 4.
Beispiel 2 – Leerer String als Separator
fn:string-join( ("Abra", "kadabra"), "")
ergibt "Abrakadabra"
Der leere String als Separator macht die Funktion wirkungsgleich zu fn:concat. Bei fn:string-join() darf die Eingangssequenz jedoch als Items wiederum Sequenzen aus Strings enthalten, anstatt – wie bei fn:concat() – nur Sequenzen aus Argumenten in Form von Einzelstrings (siehe Beispiel 5).
Beispiel 3 – Leere Eingabesequenz
fn:string-join( (), "XXXX")
ergibt "".
Das erste Argument darf eine leere Sequenz sein. Der Separator spielt in diesem Zusammenhang keine Rolle, muss jedoch übergeben werden. Die Funktion gibt den leeren String zurück und nicht, wie andere Funktionen bei leerem Eingangsargument, die leere Sequenz!
Beispiel 4 – Singleton als Eingabesequenz
fn:string-join("Beispiel", "XXXX")
ergibt "Beispiel"
Das erste Argument darf eine Singleton-Sequenz aus einem einzelnen String xs:string sein. Der Separator spielt in diesem Zusammenhang ebenfalls keine Rolle, muss jedoch übergeben werden. Die Funktion gibt das übergebene Item unverändert zurück.
Beispiel 5 – Leere Sequenz als Separator: Fehler!
fn:string-join("Beispiel", ())
ergibt einen Fehler ("An empty sequence is not allowed as the second argument of string-join()").
Es ist weder gestattet, von vornherein kein Separator-Argument zu übergeben, noch darf an dieser Stelle eine leere Sequenz bzw. ein Ausdruck stehen, der zu einer leeren Sequenz führt.
Beispiel 6 – In Eingangssequenz enthaltene Sequenz
fn:string-join(
("Es sind", fn:string(fn:count($seq)),
"Items in dieser Sequenz:", $seq),
" "
)
ergibt "Es sind 4 Items in dieser Sequenz: Das ist ein Beispiel"
Die eingefügte Sequenz $seq sei ('Das', 'ist', 'ein', 'Beispiel').
Die Items einer als Argument eingesetzten Sequenz werden gleichwertig zu den literal übergebenen Stringargumenten behandelt. Mittels fn:count() werden die Items der Sequenz gezählt. Da der Rückgabewert von fn:count() jedoch vom Typ xs:integer ist und einen Typfehler verursachen würde, ist es erforderlich, ihn mittels fn:string() explizit in einen String xs:string umzuwandeln.
Funktionsdefinition:
XPath 1.0:
Funktion nicht verfügbar
XPath 2.0:
fn:string-join($arg1 as xs:string*,
$arg2 as xs:string) as xs:string
<< zurück | vor >> |
Tipp der data2type-Redaktion: Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an: |
Copyright © Galileo Press, Bonn 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSLT 2.0 & XPath 2.0 ― Das umfassende Handbuch" denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.
Galileo Press, Rheinwerkallee 4, 53227 Bonn