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 :

définir un compteur [XSLT 2.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Points : 69
    Points
    69
    Par défaut définir un compteur
    Bonjour

    Je cherche à transformer ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <valeur name="a" atraiter="0">
    <valeur name="b" atraiter="1">
    <valeur name="c" atraiter="1">
    <valeur name="d" atraiter="1">
    <valeur name="e" atraiter="0">
    en
    Ce qui est important dans l'exemple ci dessus est la présence ou non
    des virgules : pas avant la première ni après la dernière occurrence.
    Le code suivant ne gère pas correctement ce phénomène mais
    donne une idée de là où j'en suis.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:for-each select="value">
       <xsl:if test="@atraiter='1'">
           <xsl:value-of select="@name">,
        </xsl:if>
    </xsl:for-each>

    Pour résoudre ce cas, j'ai commencé par utiliser la fonction position() qui
    ne convient pas puisqu'elle représente la position du noeud courant dans
    son parent et ne tient donc pas compte du "if".

    Quelle est la bonne méthode ?

    Merci
    Henri

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Sélectionner directement les éléments qui t'intéressent, au lieu de mettre un if dessus.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select="elements[condition]"
    (ou simplement utiliser string-join() si tu es vraiment en XSLT 2.0)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Points : 69
    Points
    69
    Par défaut
    Ok, pour la sélection. Merci.

    Tu peux développer la syntaxe pour string-join() ? J'ai bien trouvé comment
    comment fonctionne la fonction en elle même mais je ne sais pas comment
    la mettre en oeuvre dans un xsl.

    Merci

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Citation Envoyé par qdaemon_fr Voir le message
    Tu peux développer la syntaxe pour string-join() ?
    Je vois pas où est la difficulté. Imaginons ce XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <root>
      <item>1</item>
      <item>2</item>
      <item>3</item>
    </root>
    Nous pouvons utiliser string-join() comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:template match="root">
      <result>
        <xsl:value-of select="string-join(item, ',')"/>
      </result>
    </xsl:template>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    120
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 120
    Points : 69
    Points
    69
    Par défaut
    Merci, c'est très clair.

    Il n'y a pas vraiment de difficulté mais je n'avais jamais utilisé de fonction
    prenant un nombre indéfini de paramètres dans un xsl ; j'avais trouvé ceci :
    http://www.xsltfunctions.com/xsl/fn_string-join.html

    mais je ne voyais pas comment syntaxiquement, on passait l'ensemble
    des paramètres à la fonction.

    Maintenant, c'est clair.

    Merci
    Henri

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

Discussions similaires

  1. [prg jeux ]Définir l'intersection de deux rectangles
    Par mat.M dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 30/07/2003, 19h11
  2. Définir une appli JEE avec JB7 Entreprise
    Par polo54 dans le forum JBuilder
    Réponses: 4
    Dernier message: 10/06/2003, 12h48
  3. [RAVE] Définir un imprimante...
    Par FW-S dans le forum Rave
    Réponses: 2
    Dernier message: 13/03/2003, 16h15
  4. Migration Access > SQL Server (suite) : Compteur
    Par LadyArwen dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/03/2003, 15h08
  5. Comment définir le type matrice ?
    Par charly dans le forum Langage
    Réponses: 7
    Dernier message: 15/06/2002, 22h01

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