Zeichenketten ersetzen
Wöss Reini
- xsl
Hallo,
ich würde gerne in einer XSL Datei Zeichenketten ersetzen. Leider kenn ich nur die Funktion translate, welche aber nur einzelne Zeichen ersetzt.
Beispiel:
transleteNeu('(pid=312)(pid=313)(pid=314)', ')(', ') or (')
soll die Zeichenkette (pid=312)(pid=313)(pid=314)
zur Zeichenkette (pid=312) or (pid=313) or (pid=314) umwandeln.
Ist sowas in XSL möglich?
lg
Reini
ich würde gerne in einer XSL Datei Zeichenketten ersetzen. Leider kenn ich nur die Funktion translate, welche aber nur einzelne Zeichen ersetzt.
Sowas macht man zum Beispiel mit rekursiven Templates:
<xsl:template name="replace">
<xsl:param name="sourcestring"/>
<xsl:param name="toreplacestring"/>
<xsl:param name="targetstring"/>
<xsl:variable name="tmp">
xsl:choose
<xsl:when test="contains($sourcestring,$toreplacestring)">
<xsl:value-of select="concat(substring-before($sourcestring,$toreplacestring),$targetstring,substring-after($sourcestring,$toreplacestring))"/>
</xsl:when>
xsl:otherwise<xsl:value-of select="$sourcestring" /></xsl:otherwise>
</xsl:choose>
</xsl:variable>
xsl:choose
<xsl:when test="contains($tmp,$toreplacestring)"><xsl:call-template name="replace"><xsl:with-param name="sourcestring" select="$tmp"/><xsl:with-param name="toreplacestring" select="$toreplacestring"/><xsl:with-param name="targetstring" select="$targetstring"/></xsl:call-template></xsl:when>
xsl:otherwise<xsl:value-of select="$tmp"/></xsl:otherwise>
</xsl:choose>
</xsl:template>