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 :

fonction pour concaténer des nombres


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Points : 44
    Points
    44
    Par défaut fonction pour concaténer des nombres
    Hello tous,

    Je suis débutant en XSLT. Je cherche à faire la boucle suivante :
    Je parcours une liste de nombre, si le nombre est inférieure à 10 alors je l'affiche en rajoutant un zéro devant.
    Ex: si le nombre vaut '4' , je dois afficher '04'.

    Merci pour votre aide.

  2. #2
    Membre actif
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Avril 2007
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Chargé d'affaire
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 199
    Points : 297
    Points
    297
    Par défaut test
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
     
    <xsl:for-each select="toto">
    	<xsl:choose>
    		<xsl:when test=". &lt; 10">0<xsl:value-of select="."></xsl:when>
    		<xsl:otherwise><xsl:value-of select="."></xsl:otherwise>
    	</xsl:choose>
    </xsl:for-each>

  3. #3
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Points : 44
    Points
    44
    Par défaut
    Merci pour le précédent message.
    En fait, je me suis trompé dans mon descriptif, je n'ai pas vraiment de liste.

    Voilà mon code qui me cause problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xsl:choose>
    <xsl:when test="$toto &gt; 10">0<xsl:with-param name="toto" select="$toto"/></xsl:when>	
    <xsl:otherwise>
        <xsl:with-param name="toto" select="$toto"/>
    </xsl:otherwise>		
    </xsl:choose>
    mais j'ai le message d'erreur suivante :

    Unexpected element
    xsl:choose
    Où est l'erreur ?

    Merci

  4. #4
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    Citation Envoyé par fiatlux Voir le message
    Où est l'erreur ?
    Elle est dans ton fichier XSL.

    Fais voir tout ton code XSL, parce qu'apparement tu as copié/collé le code de caballo à un endroit de ton document XSL où ce n'est pas prévu pour.

  5. #5
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Points : 44
    Points
    44
    Par défaut
    Voici la partie du code concernée :

    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
    <xsl:when test="number($indicetoto) &lt; number($indicetotoOld)">
    <xsl:call-template name="boucletoto">
    <xsl:with-param name="i" select="number($i)+1"/>
    <xsl:with-param name="counttoto" select="$counttoto"/>
    <xsl:with-param name="indicetotoOld" select="$indicetotoOld"/>
    <xsl:with-param name="steptotoOld" select="$steptotoOld"/>
    <xsl:choose>
    <xsl:when test="$toto &gt; 10">0<xsl:with-param name="toto" select="$toto"/>													
    </xsl:when>	
    <xsl:otherwise>
    <xsl:with-param name="toto" select="$toto"/>
    </xsl:otherwise>		
    </xsl:choose>
    </xsl:call-template>
    </xsl:when>
    Sauf erreur de ma part, ça devrait être suffisant; si c'est pas assez je rajouterai le reste.

    Merci

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    On peut savoir ce que tu espérais faire en mettant un choose dans un call-template ?
    Il semble assez évident qu'on ne peut pas mettre de contenu dans un call-template, on ne peut y mettre que les paramètres.

  7. #7
    Expert confirmé
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Points : 4 845
    Points
    4 845
    Par défaut
    Donc effectivement, c'est pas à la bonne place.

    Dans un call template tu ne peux avoir que des with-param.

  8. #8
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Points : 44
    Points
    44
    Par défaut
    Voilà ce que j'a envie de faire:
    toto étant un nombre, si toto<10 ,par exemple 2, alors on affiche '02' et si toto >=10 (exemple 25), on laisse tel, on affiche '25'.

    Voilà ce que j'ai envie de faire.

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 557
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 557
    Points : 21 616
    Points
    21 616
    Par défaut
    Citation Envoyé par fiatlux Voir le message
    Voilà ce que j'a envie de faire:
    toto étant un nombre, si toto<10 ,par exemple 2, alors on affiche '02' et si toto >=10 (exemple 25), on laisse tel, on affiche '25'.

    Voilà ce que j'ai envie de faire.
    Pour écrire un nombre avec des zéros devant si nécessaire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="format-number($toto, '00')"/>
    Pour définir le contenu d'un paramètre d'un call-template :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xsl:with-param name="monParametre">
      <xsl:if test="$toto > 10">
        <xsl:text>Il est grand, </xsl:text>
      </xsl:if>
      <xsl:value-of select="$toto"/>
    </xsl:with-param>
    Pour passer en paramètre un nombre formaté :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:with-param name="monParametre" select="format-number($toto, '00')"/>

  10. #10
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Points : 44
    Points
    44
    Par défaut
    Voilà mon dernier code que j'ai mis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xsl:with-param name="toto">
    <xsl:if test="$toto &gt; 10">
    <xsl:value-of select="$toto"/>
    </xsl:if>
    <xsl:with-param name="monParametre" select="format-number($toto, '00')"/>										
    </xsl:if>
    </xsl:with-param>
    Mais à chaque fois que j'applique le xsl sur mon document xml, il me rajoute un'0' quelque que soit la valeur de $toto (supérieur ou inférieur à 10). Or, j'aimerais rajouter un '0' ssi $toto < 10.

    C'est embêtant car je voulais faire au début une sorte de if..else comme en java mais le xsl:else n'existe pas et xsl:choose ne peut être utiliser dans mon contexte.

    Comment faire en sorte qu'il prenne en compte le test sur $toto ???

  11. #11
    Membre du Club
    Inscrit en
    Mars 2007
    Messages
    99
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 99
    Points : 44
    Points
    44
    Par défaut
    Hello tous,

    Pas la peine de prendre en compte mon précédent commentaire(ci-dessous). En fait, il y'avait une autre boucle qui écrasait la valeur de ma variable.

    Merci à tous .

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 29/06/2010, 16h44
  2. Fonction pour lire des nombres dans un fichier
    Par passant_ dans le forum Débuter
    Réponses: 11
    Dernier message: 28/10/2008, 18h47
  3. fonction pour comparer des nombres
    Par insa59 dans le forum Débuter
    Réponses: 5
    Dernier message: 21/06/2007, 10h34
  4. Créer fonctions pour saisir des nombres
    Par odsen.s dans le forum C
    Réponses: 34
    Dernier message: 30/04/2007, 19h34

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