XSL Plusieurs de rechercher et de remplacer la fonction

Je suis en essayant d'utiliser le XSL translate() de la fonction à créer quelque chose comme une recherche et remplacer la fonction comme suit:

<xsl:template name="create-id">
    <xsl:param name="id" />
    <xsl:call-template name="search-and-replace">
        <xsl:with-param name="str" select="$id" />
        <xsl:with-param name="search">0123456789</xsl:with-param>
        <xsl:with-param name="replace">abcdefghij</xsl:with-param>
    </xsl:call-template>
</xsl:template>

<xsl:template name="search-and-replace">
    <xsl:param name="str" />
    <xsl:param name="search" />
    <xsl:param name="replace" />
    <xsl:variable name="newstr" select="translate($str, $search,
    $replace)" />
    <xsl:choose>
        <xsl:when test="contains($newstr, $search)">
            <xsl:call-template name="search-and-replace">
                <xsl:with-param name="str" select="$newstr" />
                <xsl:with-param name="search" select="$search" />
                <xsl:with-param name="replace" select="$replace" />
            </xsl:call-template>
        </xsl:when>
        <xsl:otherwise>
            <xsl:value-of select="$newstr" />
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>

Cependant, quelque chose à propos de ma logique est faux qu'il semble l'être de dépouiller le dernier caractère dans la chaîne renvoyée. Ma conjecture est que translate() est seulement le remplacement de la première occurrence de chaque caractère de la chaîne et n'est pas vraiment récursive.

Des pensées ou d'entrée serait appréciée.

Post quelques exemples d'entrée et de sortie que vous voyez, avec ce que vous vous attendez à voir. Translate() ne peut pas faire ce que vous pensez qu'il fait, mais sans exemple nous ne pouvons pas dire ce que c'est.
translate() ne fait pas ce que vous en pensez. Ce n'est pas une bonne idée de faire des suppositions sur ce qu'est une fonction en fait, en regardant son nom: lire la spec en premier.
Bonne question, +1. Voir ma réponse complète XSLT 1.0 solution aux multiples remplacer le problème. Explication détaillée est fournie, trop.

OriginalL'auteur John | 2011-03-12