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 :

[XSLT]incrémentation d'une variable


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Inscrit
    Inscrit en
    Juin 2007
    Messages
    161
    Détails du profil
    Informations forums :
    Inscription : Juin 2007
    Messages : 161
    Points : 60
    Points
    60
    Par défaut [XSLT]incrémentation d'une variable
    Bonjour;
    Je veux transformer un fichier xml en un autre fichier xml à l'aide de xslt.

    Mon fichier xml est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <Fichier_XML>
        <Bloc ID="1" x1="36" y1="10" x2="725" y2="20"/>
        <Bloc ID="2" x1="591" y1="151" x2="665" y2="162"/>
        <Bloc ID="3" x1="590" y1="184" x2="717" y2="198"/>
        <Bloc ID="4" x1="590" y1="218" x2="723" y2="230"/>
        <Bloc ID="5" x1="102" y1="337" x2="263" y2="351"/>
        <Bloc ID="6" x1="102" y1="370" x2="234" y2="383"/>
        <Bloc ID="7" x1="102" y1="403" x2="224" y2="417"/>
    </Fichier_XML>
    J'ai un problème dans l'incrémentation d'une variable dans un fichier xslt:

    le fichier xslt est le suivant:

    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
     
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" >
      <xsl:template xmlns:xsl="http://www.w3.org/1999/XSL/Transform" match="/" >
        <Fichier_XML>
            <entête>
              <xsl:variable xmlns:xsl="http://www.w3.org/1999/XSL/Transform" select="1" name="a" />
              <xsl:for-each select="//Bloc">
                <xsl:param xmlns:xsl="http://www.w3.org/1999/XSL/Transform" select="./@y2" name="b" />
                <xsl:if xmlns:xsl="http://www.w3.org/1999/XSL/Transform" test="$b &lt; 300" >
                    <xsl:text> a=</xsl:text>
                    <xsl:value-of select="$a=($a)+1"/>
                </xsl:if>
              </xsl:for-each>
           </entête>
        </Fichier_XML>
      </xsl:template>
    </xsl:stylesheet>
    le resultat est le suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?xml version="1.0"?>
    <Fichier_XML>
    <entête> 
    a=false a=false a=false a=false
    </entête>
    </Fichier_XML>
    par contre mon but est d'avoir le résultat suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <?xml version="1.0"?>
    <Fichier_XML>
    <entête> 
    a=2 a=3 a=4 a=5
    </entête>
    </Fichier_XML>
    Enfin, j'ai pas pu changer le contenue du paramètre a.

    Pouvez vous m'aider à trouver la possibilité d'incrémenter le paramètre a.

    Merci d'avance.



  2. #2
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Pour permettre de faire du parallélisme, il a été décidé que les variables XSLT ne pourraient pas changer de valeur... Il faut donc programmer différemment.

    Dans votre cas, on peut par exemple faire un count(//Bloc) pour savoir combien il y a d'élément Bloc

  3. #3
    Membre expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Points : 3 938
    Points
    3 938
    Par défaut Rectificatif
    Tu px très bien incrémenter une variable en XSLT, moi je le fais en utlisant la clause suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:with-param name="Occur" select="$Occur+1"/>
    Et ca ca marche très bien.

  4. #4
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    Un paramètre n'est pas exactement une variable. En fait, lorsque l'on a réellement besoin d'un traitement itératif, on est amené à utiliser des templates et à leur passer un ou plusieurs paramètres. Il s'agit généralement de programmation récursive et, alors, il est fréquent que le paramètre d'un appel soit calculé à partir du paramètre de l'appel précédent.Il ne s'agit pas d'une modification de variable.De manière générale, en XSLT, il n'est pas indispensable de devoir en arriver à ce type de traitement, ce n'est pas la philosophie du langage. Il ne faut pas chercher à programmer en XSLT comme on peut avoir l'habitude de le faire avec un langage de troisième génération (Java, C#, PHP,...).

Discussions similaires

  1. [XSLT] Incrémentation d'une variable
    Par Oberown dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 03/10/2006, 18h03
  2. [XSLT] Création d'une variable global tableau
    Par mbodjisa dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 03/09/2006, 09h50
  3. incrémentation d'une variable
    Par dorian2031 dans le forum Langage
    Réponses: 3
    Dernier message: 02/08/2006, 16h13
  4. [Tableaux] Incrémentation d'une variable
    Par cisse18 dans le forum Langage
    Réponses: 46
    Dernier message: 19/07/2006, 17h02
  5. [Débutant] Probleme d'incrémentation d'une variable
    Par sakuragikan dans le forum ASP
    Réponses: 2
    Dernier message: 25/08/2005, 13h11

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