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 :

[XPath] Récupérer la valeur d'un noeud cousin ?


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 11
    Points : 11
    Points
    11
    Par défaut [XPath] Récupérer la valeur d'un noeud cousin ?
    Bonjour à tous.
    Voici la structure de mon fichier XML (je note les attributs servant d'identifiant uniquement et les valeurs m'intéressant) :

    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
     
    <Report>
         <Results_list Id="Result_id1">
            <Result_line Number="1">
               <Val Column="1">31/03/2009 12:00</Val>
               <Val Column="2">31/03/2009 06:30</Val>
               <Val Column="3">28/03/2009 00:00</Val>
               <Val Column="4">30/03/2009 23:00</Val>
               ...
            </Result_line>
            <Result_line Number="2">
               <Val Column="1">2</Val>
               <Val Column="2">5</Val>
               <Val Column="3">7</Val>
               <Val Column="4">1</Val>
               ...
            </Result_line>
            ...
         </Results_list>
         <Results_list Id="Result_id2">
            ...
         </Results_list>
     
         <Results_list Id="Result_id3">
            ...
         </Results_list>
         ...
    </Report>
    J'espère tout d'abord que ma structure XML est claire.

    Je me sers d'un .XSL pour générer un fichier compatible .CSV, c'est à dire avec mes différentes valeurs séparées par un ;

    Il me faut pour cela, concaténer les valeurs provenant de deux <Result_line> différents.

    Exemple suivant mon exemple de fichier XML:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
               31/03/2009 12:00 | 2
               31/03/2009 06:30 | 5
               28/03/2009 00:00 | 7
               30/03/2009 23:00 | 1
    Pour lire mes données, j'ai deux boucles :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xsl:for-each select="Result_line">		
        <xsl:for-each select="Val">
     
        </xsl:for-each>
    </xsl:for-each>
    Il me faut donc, pour chaque noeud Val, aller lire le noeud Val ayant le même numéro de colonne mais dans le Result_line +1.

    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
    <Report>
         <Results_list Id="Result_id1">
            <Result_line Number="1">
               <Val Column="1">31/03/2009 12:00</Val>
               <Val Column="2">31/03/2009 06:30</Val>
               <Val Column="3">28/03/2009 00:00</Val>
               <Val Column="4">30/03/2009 23:00</Val>
             </Result_line>
            <Result_line Number="2">
               <Val Column="1">2</Val>
               <Val Column="2">5</Val>
               <Val Column="3">7</Val>
               <Val Column="4">1</Val>
             </Result_line>
         </Results_list>
    </Report>
    J'ai essayé de multiples combinaisons avec les parent():: et autres following-sibling, mais aucun n'a réussi à me renvoyer la bonne valeur.

    Merci à tous de votre aide.

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 11
    Points : 11
    Points
    11
    Par défaut
    Avec beaucoup de cafouillages, voici la solution !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:with-param name="mavaleur" select="../following-sibling::Result_line[position()=1]/Val[@Column=current()/@Column]"/>
    Fallait y penser...

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

Discussions similaires

  1. [DOM] Récupérer la valeur d'un noeud XML
    Par sheira dans le forum Bibliothèques et frameworks
    Réponses: 2
    Dernier message: 16/11/2010, 10h45
  2. [XPath] Récupérer plusieurs fils d'un noeud
    Par saidgrd dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 25/02/2010, 12h30
  3. [xpath] test sur valeur d'un noeud
    Par lusitano11 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 03/12/2008, 16h28
  4. Récupérer la valeur d'un noeud XML
    Par Tchupacabra dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 05/06/2008, 10h23
  5. Récupérer les valeurs d'un noeud dans un fichier XML
    Par yosthegost dans le forum Delphi
    Réponses: 1
    Dernier message: 30/05/2006, 17h38

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