Home
Über mich
Blog
Veröffentlichungen
IT-Trainings
Impressum


XPath: tokenize

Zusammenfassung:

Die XPath-Funktion "tokenize" konvertiert einen String in eine Sequenz.

XPath: tokenize

Die "tokenize"-Funktion ist im Grunde das Gegenstück zu "string-join". Während "string-join" in der Lage ist, eine Sequence mit mehreren Items in einen Einzelstring zu konvertieren, wobei auch Trennzeichen eingefügt werden können (im Beispiel: ";"), kann "tokenize" einen derartigen String unter Zuhilfenahme des Trennzeichens wieder in eine Sequence konvertieren.

Um das zu verdeutlichen, generieren wir zunächst eine Sequence aus den Werten 'Meier', 'Schulze', 'Müller', 'Schmidt' sowie den Zahlen 1 bis 10.

<xsl:variable name="v1" as="xs:string+">
  <xsl:for-each select="('Meier', 'Schulze', 'Müller', 'Schmidt', 1 to 10)">
    <xsl:value-of select="."/>
  </xsl:for-each>
</xsl:variable>

Im nächsten Schritt konvertieren wir die Sequence in einen String mit dem Trennzeichen ";".

<xsl:variable name="v2" as="xs:string">
    <xsl:value-of select="string-join($v1, ';')"/>
</xsl:variable>

Zur Kontrolle können wir uns den generierten String anzeigen lassen:

<xsl:value-of select="$v2"/>

Hier ist also der String:

Meier;Schulze;Müller;Schmidt;1;2;3;4;5;6;7;8;9;10

Nun kommt "tokenize" ins Spiel, das den String in eine Itemlist aufsplittet:

<xsl:for-each select="tokenize(xs:string($v2), ';')">
  <item>
    <xsl:value-of select="."/>
  </item>      
</xsl:for-each>

Resultat:

   <item>Meier</item>
   <item>Schulze</item>
   <item>Müller</item>
   <item>Schmidt</item>
   <item>1</item>
   <item>2</item>
   <item>3</item>
   <item>4</item>
   <item>5</item>
   <item>6</item>
   <item>7</item>
   <item>8</item>
   <item>9</item>
   <item>10</item>

Interessant ist auch die Variante, die einzelnen Items der generierten Sequence auf bestimmte Eigenschaften hin zu überprüfen, etwa, ob sie sich als "xs:integer" casten lassen. Damit fallen die Werte 'Meier', 'Schulze', 'Müller', 'Schmidt' aus der Sequence heraus, übrig bleiben die Integerwerte.

<xsl:for-each 
   select="tokenize(xs:string($v2), ';')[. castable as xs:integer]">
  <item>
    <xsl:value-of select="."/>
  </item>      
</xsl:for-each>

Resultat:

   <item>1</item>
   <item>2</item>
   <item>3</item>
   <item>4</item>
   <item>5</item>
   <item>6</item>
   <item>7</item>
   <item>8</item>
   <item>9</item>
   <item>10</item>

qrpic/tokenize.jpg

wg / 14. Oktober 2017




Fragen? Anmerkungen? Tips?

Bitte nehmen Sie Kontakt zu mir auf (info10@wilfried-grupe.de).



Vielen Dank für Ihr Interesse an meiner Arbeit.


V.i.S.d.P.: Wilfried Grupe * Klus 6 * 37643 Negenborn

Mobil: 0151. 750 360 61 * eMail: info10@wilfried-grupe.de