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 :

Problem de for-each


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut Problem de for-each
    Bonjour,

    Je bloque sur le parcours d'une liste dont j'aimerai refaire l'arborescence. J'ai les items comme ceux ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <header>
      <personne>
        <nom>martin</nom>
        <voiture>twingo</voiture>
      </personne>
      <personne>
        <nom>martin</nom>
        <voiture>espace</voiture>
      </personne>
      <personne>
        <nom>armand</nom>
        <voiture>ford</voiture>
      </personne>
    </header>
    et j'aimerai les avoir comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <header>
      <personne>
        <nom>martin</nom>
        <voiture>twingo</voiture>
        <voiture>espace</voiture>
      </personne>
      <personne>
        <nom>armand</nom>
        <voiture>ford</voiture>
      </personne>
    </header>
    Un peu comme si je constituai l'ensemble des noms différents et que je reparcours la liste nom par nom.

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    il suffit de regrouper les éléments <personne> ayant un <nom> identique, pour cela voir la FAQ.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2009
    Messages : 4
    Points : 3
    Points
    3
    Par défaut
    Merci grandfather mais j'arrive pas à faire ce que je veux,

    Dans la faq, les noeuds suivants sont connus :
    <xsl:apply-templates select="//b[../a=current()]"/>
    L'exemple fourni était simplifié, une version plus complète serait :
    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
    20
    21
    22
    23
    24
    25
    26
    <header>
      <personne>
        <nom>martin</nom>
        <prenom>jo</prenom>
        <adresse>paris</adresse>
        <autres elements à ne pas répéter/>
         <element>
           <voiture>twingo</voiture>
           <habitation>maison</habitation>
         </element>
        <autres elements à répéter 1/>
      </personne>
      <personne>
        <nom>martin</nom>
        <prenom>jo</prenom>
        <adresse>paris</adresse>
        <autre element a ne pas repeter/>
         <element>
           <voiture>espace</voiture>
           <habitation>appartement</habitation>
        </element>
        ... elements à répéter 
      </personne>
    
    </header>
    Ca donnerait :
    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
    <header>
      <personne>
        <nom>martin</nom>
        <prenom>jo</prenom>
        <adresse>paris</adresse>
        <autre element a ne pas repeter/>
         <element>
           <voiture>twingo</voiture>
           <habitation>maison</habitation>
         </element>
         <element>
           <voiture>espace</voiture>
           <habitation>appartement</habitation>
        </element>
         ... elements à répéter ...
      </personne>
     et pareil, pour les autres personnes
    </header>
    Y a un truc que j'ai pas pigé ... je sens qu'il faut mettre un for each pour itérer sur tous les éléments à répéter, mais en même temps il ne faut mettre l'entête qu'une seule fois ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <header>
     
         pour toute mes personnes group by nom
            si c'est la première fois, met <personne> et l'entete
            sinon met les éléments à répéter
       </personne>
     
    </header>

    Citation Envoyé par GrandFather Voir le message
    Bonjour,

    il suffit de regrouper les éléments <personne> ayant un <nom> identique, pour cela voir la FAQ.

Discussions similaires

  1. [XL-2007] Probleme boucle For each
    Par franc83 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 17/07/2011, 18h42
  2. probleme avec for-each
    Par tongo dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 16/06/2008, 10h49
  3. Probleme boucle For Each controls
    Par Tusbar dans le forum Windows Forms
    Réponses: 21
    Dernier message: 13/09/2007, 23h56
  4. Probleme avec For Each
    Par Seth77 dans le forum VB.NET
    Réponses: 7
    Dernier message: 22/03/2007, 14h08
  5. [VB]Probleme avec for each .....
    Par STRUFIELD dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 20/01/2006, 08h31

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