AlexH: String zerlegen

Beitrag lesen

Hallo whine,

das Problem kenne ich.
Wenn du mit dem XSLT Processor 1.0 arbeitest gibt es keine andere Möglichkeiten soviel ich weiß.

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?

  
<!-- template aufruf -->  
<xsl:call-template name="explode">  
 <xsl:with-param name="text" value="abc#123#xyz#890" />  
</xsl:call-template>  
  
<!-- haupt template -->  
<xsl:template name="explode">  
<xsl:param name="text" />  
<xsl:if test="string-length($text) > 0">  
  <xsl:when test="string-length(substring-before($text, '#')) > 0">  
       <xsl:call-template name="output">  
          <xsl:with-param name="message">  
           <xsl:value-of select="substring-before($text, '#')" />  
          </xsl:with-param>  
       </xsl:call-template>  
  </xsl:when>  
  <xsl:otherwise>  
       <xsl:call-template name="output">  
          <xsl:with-param name="message">  
            <xsl:value-of select="$text" />  
          </xsl:with-param>  
       </xsl:call-template>  
  </xsl:otherwise>  
</xsl:if>  
</xsl:template>  
  
<!-- ausgabe template -->  
<xsl:template name="output">  
<xsl:param name="message" />  
 <!-- ausgabe implementieren -->  
</xsl:template>  

Meine letzte XSL Aufabe sah vor in einem Kreditkarten Template des Payment Providers eine XML Variable auszulesen bzw. eins der Nodes mit folgendem Inhalt:

  
<root>  
 <allowed>1,2,4,5</allowed>  
 ...  
</root>  

Ich musste also ählich wie Du an einem bestimmten Zeichen "splitten", in meinem Fall das Komma, bei dir die Raute. Den Code musste ich etwas abwandeln, sollte aber mit wenigen Anpassungen funktionieren.

Schön ist das nicht, aber soviel ich googeln konnte gibt es erst ab XSLT 2.0 bessere Methoden zur Datenverarbeitung.