ThomasM: String zerlegen

Beitrag lesen

Hallo whine,

Ich habe in einer XML folgendes

<zf>wortabc#wortdef#wortganzdolllang#wort1#wort3345#wort777...<zf>

Nun möchte ich gern mit xslt eine Ausgabe erzeugen, welche mit immer ein durch die # getrenntes Paar untereinander ausgibt (oder erstmal in eine Variable schreibt). Im o.g. Bsp. also

wortabc#wortdef#
wortganzdolllang#wort1#
wort3345#wort777
...

Ich habe schon mit substring-before und substring-after rumgespielt, aber so richtig bin ich auf keinen grünen Zweig gekommen.
Hat jemand eine Idee?

Für XSLT 2.0 (ansonsten, wie gesagt, rekursiv zerlegen):

<xsl:variable name="tok" select="fn:tokenize(zf, '#')"/>  
  
<xsl:for-each select="$tok">  
  <xsl:variable name="pos" select="fn:position()"/>  
  <xsl:if test="$pos mod 2 != 0">  
    <xsl:value-of select="fn:concat($tok[$pos], '#', $tok[$pos + 1], if($pos != fn:last() - 1) then '#&#xA;' else())"/>  
  </xsl:if>  
</xsl:for-each>

Erzeugt:
wortabc#wortdef#
wortganzdolllang#wort1#
wort3345#wort777...

Grüße,
Thomas