string.subst — Substitute one text string for another in a string
The string.subst template replaces all
occurances of target in string
with replacement and returns the result.
<xsl:template name="string.subst">
<xsl:param name="string"></xsl:param>
<xsl:param name="target"></xsl:param>
<xsl:param name="replacement"></xsl:param>
<xsl:choose>
<xsl:when test="contains($string, $target)">
<xsl:variable name="rest">
<xsl:call-template name="string.subst">
<xsl:with-param name="string" select="substring-after($string, $target)"></xsl:with-param>
<xsl:with-param name="target" select="$target"></xsl:with-param>
<xsl:with-param name="replacement" select="$replacement"></xsl:with-param>
</xsl:call-template>
</xsl:variable>
<xsl:value-of select="concat(substring-before($string, $target), $replacement, $rest)"></xsl:value-of>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="$string"></xsl:value-of>
</xsl:otherwise>
</xsl:choose>
</xsl:template>