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 Separator­string, 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 die­sem 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, zwi­schen die zusammenzufassenden Stringwerte der Eingabesequenz jeweils einen Separatorstring einzuschieben.

Wird der leere String als Separator übergeben, so ist die Wirkung der Funk­tion 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 ein­geschoben und verkettet. An das letzte Item der Sequenz wird er nicht zusätz­lich 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:con­cat. Bei fn:string-join() darf die Eingangssequenz jedoch als Items wie­derum 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 die­sem Zusammenhang keine Rolle, muss jedoch übergeben werden. Die Funk­tion 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 argu­ment 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