IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XSL/XSLT/XPATH XML Discussion :

template XSL qui calcule la somme des chiffres d'un nombre


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 106
    Points
    106
    Par défaut template XSL qui calcule la somme des chiffres d'un nombre
    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 :-)

  2. #2
    Membre chevronné Avatar de nosferapti
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    1 157
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 1 157
    Points : 1 895
    Points
    1 895
    Par défaut
    ça vient peut-être de la variable "longueur", tu as mis "xsl:param" au lieu de "xsl:variable"
    GNAP !

  3. #3
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 188
    Points : 106
    Points
    106
    Par défaut Re
    Re,

    Merci bcp, c'était bien ca :-)

Discussions similaires

  1. Calcul de somme des chiffres de nombre 2^1000
    Par mouradj2006 dans le forum Mathématiques
    Réponses: 12
    Dernier message: 27/02/2012, 11h45
  2. Un script qui calcule la somme des montants d'un formulaire
    Par akaquane dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 17/10/2011, 13h53
  3. [XL-2007] Fonction calculant la somme des chiffres des cellules d'une même couleur
    Par XceSs dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 14/08/2010, 00h23
  4. Fonction de calcul de somme des chiffres d'un entier
    Par sam343 dans le forum Langage
    Réponses: 3
    Dernier message: 07/10/2009, 17h35
  5. Réponses: 6
    Dernier message: 01/02/2009, 00h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo