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] Faire une boucle sur une variable [i]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 6
    Points : 5
    Points
    5
    Par défaut [XSLT] Faire une boucle sur une variable [i]
    Bon je vais tenter de tout mon possible d'etre clair, j'aimerai savoir si en xsl on peut faire une sorte de boucle dans cette esprit :

    - Dans le code "Progress" viens d'un fichier XML est en fonction de sa valeur je met un bg color different ( c'est une sorte de progress bar )
    - Donc comment faire une boucle pour afficher 10 "TD" et sur chaque "TD"
    afficher un bg different.

    - Je m'excuse d'avance je debute en XSL ( 2 jours ), et j'ai pas l'habitude de faire ce que je ne sais pas faire mais c'est dans mon travail qu'on me demande ca. c'est pour cela que je sollicite une aide ...

    Ci dessous un bout de code qui marche pas du tout juste pour donnée une idée de ce que je veux faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    For (i=0;i<10;i++) <-- la je pense a un <xsl:for-each.... mais je sais pas quoi mettre ensuite
     
       <xsl:choose>
         <xsl:when test=".[(Progress/10)<i]">
            <th width="5" bgcolor="red">.</th>
         <xsl:when>
            <th width="5" bgcolor="green">.</th>
       </xsl:choose>
    [dN:]

  2. #2
    Membre averti
    Avatar de knotty
    Inscrit en
    Mars 2002
    Messages
    126
    Détails du profil
    Informations forums :
    Inscription : Mars 2002
    Messages : 126
    Points : 391
    Points
    391
    Par défaut
    XSL est utilise pour transformer un document XML

    C'est a dire que ton for-each doit porter sur des "children" d'un "node"
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     <monneoud>
        <fils/>
        <fils/>
        <fils/>
     </monnoeud>
    ton for-each parcourera les <fils>

    Pour creer 10 TD, tu peux repeter le code 10 fois.

    Parce que XSLT est un language de programmation "en arbre", les variables n'ont pas le meme sens qu'en C par exemple.

    Utilise XSL pour transformer du XML, pas forcement pour autre chose.

    Bon courage[/code]
    Christophe Ludet
    Testez vos connaissances Java - http://knotty.developpez.com
    Donner des ailes a votre application (J2EE patterns) - http://knotty.developpez.com/j2ee

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 6
    Points : 5
    Points
    5
    Par défaut
    Ca me parais quand meme un peu strict sur ce coup .... et si je dois repeter le code 100 fois ???
    [dN:]

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2002
    Messages : 9
    Points : 11
    Points
    11
    Par défaut
    si il te faut vraiment une boucle, il faut le faire en récursif (programmation déclarative oblige).

  5. #5
    Futur Membre du Club
    Inscrit en
    Octobre 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 6
    Points : 5
    Points
    5
    Par défaut ???
    je vais avoir l'air con mais je sais pas trop comment le faire en mode recursif ... merci qd meme je vais surfer sur leweb pour trouver un exemple
    [dN:]

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    40
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 40
    Points : 48
    Points
    48
    Par défaut
    OK, je la refais encore une fois :

    XSL est un langage fonctionnel, ton il faut faire les itérations en faisant du récursif (c la seule solution) :

    Exemple : ecrire 10x Toto :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xsl:template name="Boucle">
    <xsl:param name="i"/>
    <xsl:if test="i<10">Toto 
    <xsl:call-template name="Boucle">
    <xsl:with param name="i" select="number($i)+1"/>
    </xsl:call-template>
    </xsl:template>
    Pour lancer le tout, ca donne :

    <xsl:call-template name="Boucle"/>

    Voili voila !

  7. #7
    Futur Membre du Club
    Inscrit en
    Octobre 2002
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Octobre 2002
    Messages : 6
    Points : 5
    Points
    5
    Par défaut Merci :))
    Genial cool la je comprend En fait je comprend vite mais faut m'expliquer longtemp, je te remercie merci d'avoir eclairer ma vie

    [dN:]

  8. #8
    Membre du Club
    Inscrit en
    Mai 2010
    Messages
    101
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 101
    Points : 44
    Points
    44
    Par défaut
    Je souhaite également faire une boucle pour un flux rss !

    Il n'est donc pas possible de réaliser une boucle sur un fichier .xml ?

    Merci

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Santcho, je te rappelle que tu ne fais pas de XSL-T (qui transforme du XML vers un autre XML).

    Toi, ta source de donnée, c'est un programme (PHP) et tu cherches à générer ce fichier XML à partir d'une boucle de ce programme.

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

Discussions similaires

  1. [2008R2] SQLCMD faire une boucle sur une query
    Par janlouk dans le forum Développement
    Réponses: 2
    Dernier message: 25/06/2015, 14h10
  2. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  3. une colle sur une boucle
    Par blastfr dans le forum SAS Base
    Réponses: 6
    Dernier message: 27/04/2010, 15h19
  4. [XL-2003] faire une boucle dans une boucle VBA
    Par the-geut dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 27/04/2010, 15h06
  5. Réponses: 3
    Dernier message: 01/07/2009, 18h55

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