Bonjour,

J'ai essayé de faire une fonction XSL, qui permet de faire la somme des chiffres d'un nombre donné en argument, mais le template récursif boucle à l'infini.

Voila comment il est défini :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
 <xsl:template name="CalculSommeDesChiffres">
        <xsl:param name="numero"/>
        <xsl:param name="somme"/>
        <xsl:param name="longueur" select="string-length($numero)"/>
        <xsl:choose>
            <!-- Cas d'arret : le nombre n'a qu'un chiffre -->
            <xsl:when test="$longueur = 1 ">
                <xsl:value-of select="number($somme) + number($numero)"/>
            </xsl:when>
            <xsl:otherwise>
                <!-- On extrait le 1er chiffre du nombre -->
                <xsl:variable name="firstChiffre" select="number(substring($numero,1,1))"/>
                <xsl:call-template name="CalculSommeDesChiffres">
                    <xsl:with-param name="numero" select="substring($numero, 2, $longueur)"/>
                    <xsl:with-param name="somme" select="number($somme) + number($firstChiffre)"/>
                </xsl:call-template>
            </xsl:otherwise>
        </xsl:choose>
    </xsl:template>
Et puis, je l'appelle comme ceci:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<xsl:call-template name="CalculSommeDesChiffres">
                    <xsl:with-param name="nombre" select='1452'></xsl:with-param>
                    <xsl:with-param name="somme" select='0'></xsl:with-param>
                </xsl:call-template>
Qu'en pensez-vous?

Merci :-)