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] problème de boucle imbriquée en xsl/xpath


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Points : 46
    Points
    46
    Par défaut [XSLT] problème de boucle imbriquée en xsl/xpath
    Bonjour,

    Voici mon code xml:

    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
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    <?xml version="1.0" encoding="ISO-8859-1" ?> 
    - <nuages>
    - <nuage>
    - <nom>
      altocumulus 
      <espece>lenticularis</espece> 
      <espece>stratiformis</espece> 
      <espece>castellanus</espece> 
      <espece>flocus</espece> 
      </nom>
      <altitude max="6000" min="2000" /> 
      <hydrometeores>Aucun.</hydrometeores> 
      </nuage>
    - <nuage>
    - <nom>
      cirrus 
      <espece>flocus</espece> 
      <espece>castellanus</espece> 
      <espece>spissatus</espece> 
      <espece>uncinus</espece> 
      <espece>fibratus</espece> 
      </nom>
      <altitude max="12000" min="6000" /> 
      <hydrometeores>Aucun.</hydrometeores> 
      </nuage>
    - <nuage>
    - <nom>
      cirrocumulus 
      <espece>lenticularis</espece> 
      <espece>stratiformis</espece> 
      <espece>flocus</espece> 
      <espece>castellanus</espece> 
      </nom>
      <altitude max="7000" min="5000" /> 
      <hydrometeores>Aucun.</hydrometeores> 
      </nuage>
    - <nuage>
    - <nom>
      cumulus 
      <espece>fractus</espece> 
      <espece>humilis</espece> 
      <espece>mediocris</espece> 
      <espece>congestus</espece> 
      </nom>
      <altitude max="8000" min="200" /> 
      <hydrometeores>Aucun en general.</hydrometeores> 
      </nuage>
    - <nuage>
    - <nom>
      strato-cumulus 
      <espece>stratiformis</espece> 
      <espece>lenticularis</espece> 
      <espece>castellanus</espece> 
      </nom>
      <altitude max="2000" min="0" /> 
      <hydrometeores>Aucun.</hydrometeores> 
      </nuage>
    - <nuage>
    - <nom>
      cumulonimbus 
      <espece>calvus</espece> 
      <espece>capillatus</espece> 
      <espece>mammatus</espece> 
      </nom>
      <altitude max="18000" min="300" /> 
      <hydrometeores>Averses (parfois de neige, de gresil ou de grele).</hydrometeores> 
      </nuage>
      </nuages>
    Et voici mon code xsl :

    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
    <?xml version="1.0" encoding="UTF-8"?> 
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:template match="/">
     <html> 
     <body>
     <b>Les nuages : </b>
       <xsl:for-each select="nuages/nuage/nom">
         <xsl:copy-of select="text()" />
           Ce type de nuage possede les especes suivantes :
           <xsl:for-each select="nuages/nuage/nom">
             <xsl:value-of select="espece" /> 
           </xsl:for-each>
       </xsl:for-each>
      </body>
      </html>
      </xsl:template>
    </xsl:stylesheet>
    J'aimerais obtenir dans une boucle les noms des nuages ( ce qui fonctionne) et j'aimerais faire une deuxième boucle pour indiquer les espèces de chaque nuages. Mais je n'arrive pas a récupérer les données concernant les especes.

    Pouvez-vous m'aidez svp ?
    merci

  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
    A l'intérieur d'un for-each, le contexte correspond au noeud courant.

    Il ne vous faut donc pas répéter le chemin.

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    ok merci!!
    Il n'y a plus de bug!!
    Sauf que je voudrais toutes les espèces pour chaque types de nuages.
    Et la j'obtiens qu'une espèce de nuages pour chaque types!!
    je croyais quand m'étant
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="espece" />
    , ça allait me récupéré toutes les espèces!!
    Pourquoi il ne m'en récupéré qu'une seule par nuage ??

  4. #4
    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 faut faire une itération sur les espèces :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
       <xsl:for-each select="nuages/nuage/nom">
         <xsl:copy-of select="text()" />
           Ce type de nuage possede les especes suivantes :
           <xsl:for-each select="espece">
             <xsl:value-of select="." /> 
           </xsl:for-each>
       </xsl:for-each>
    Je trouve la structure de ton document XML pas très pratique, l'élément nom comprenant un noeud texte (le nom proprement dit) ainsi que des éléments fils espece, ce qui complique un peu l'écriture du code XSLT. La structure suivante serait à mon avis plus pertinente, notamment au niveau sémantique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <nuage>
      <nom>
          <genre>cirrus</genre>
          <espece>flocus</espece> 
          <espece>castellanus</espece> 
          <espece>spissatus</espece> 
          <espece>uncinus</espece> 
          <espece>fibratus</espece> 
      </nom>
      <altitude max="12000" min="6000" /> 
      <hydrometeores>Aucun.</hydrometeores> 
    </nuage>

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 81
    Points : 46
    Points
    46
    Par défaut
    Merci pour le coup de main.
    Je ne peux pas toucher la structure du xml car c'est un exercice.
    Par contre dans ta ligne de code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     <xsl:value-of select="." />
    que signifie le point???
    Car je croyais qu'il fallait mettre un élément qui se trouvait dans l'arborescence de mon fichier xml .
    merci

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

Discussions similaires

  1. [OCaml] Problème de boucles imbriquées
    Par Capitain_jupi dans le forum Caml
    Réponses: 0
    Dernier message: 01/10/2011, 13h42
  2. Problémes de Boucles imbriquées
    Par claude_tech dans le forum Débuter
    Réponses: 11
    Dernier message: 13/06/2011, 12h57
  3. [XSLT] Problème de boucle avec for-each
    Par knack8 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 29/04/2009, 01h42
  4. [XSLT] Problème de boucle
    Par robinou dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 28/01/2007, 19h04
  5. Problème de boucles imbriquées
    Par Gnux dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 09/12/2005, 20h26

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