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>