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 :

[XSL] Récupération des attributs parents


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 26
    Par défaut [XSL] Récupération des attributs parents
    Bonjour tout le monde,

    à chaque jour un problème différent lol. Je vais essayer d'expliquer mon pb.
    Comme à mon habitude je dois extraire des données d'un fichier XML et les mettre dans un fichier CSV.
    J'ai un fichier XML qui ressemble a ça :
    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
     
     
    <Noeud1>
           <Noeud2 name="Variable1">
                 <Elements>
                       <Element name="parentparentname" >
                             < Eléments >
                                   < Élément name="parentname1">
                                        <Modules>
                                              <Modules  name= "test1" >
                                                  .
                                                  .
                                              <Modules  name= "testN" >
                                         </Modules>
                                    </Élément>
     
                                   < Élément name="parentname2">
                                        <Modules>
                                              <Modules  name= "test1">
                                                  .
                                                  .
                                              <Modules  name= "testN">
                                         </Modules>
                                   </Élément>
                            </Éléments>
                       </Élément>
                 </Éléments>
           </Noeud2>
    </Noeud1>
    J'espere que mon XML est compréhensible.
    Ce que je veux faire, c'est un fichier CSV de cette forme

    Test1,Parentname1,ParentParentname

    TestN,Parentname1,ParentParentname

    Test1,Parentname2,ParentParentname

    TestN,Parentname2,ParentParentname

    et ainsi de suite

    Ce que je pensais faire :

    1° : Apply template sur le noeud modules (ça me permet de récupérer tous les modules)

    2 ° : récupérer l'attribut du parent juste au dessus (parentname)

    3° :récupérer l'attribut du parent encore au dessus (parentparentname)

    Mon problème est que je ne sais pas récupérer les attributs parents quand je fais un apply template sur le noeuds modules. Avez vous un moyen de faire ça ? ou des conseil pour réaliser ce que je veux

    J'espère avoir bien expliquer mon problème

  2. #2
    Membre Expert
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Par défaut
    Bonjour M_saun,

    si ton noeud contexte est <Modules/>
    alors l'expression Xpath permettant d'obtenir l'attribut name de l'élément parent Élément est "../Élément/@name".

    Pour d'autres éléments parents, tu peux appliquer le même principe.

    Remarque : tu peux simplifier ton code XML, en remplacant les types Noeud1 et Noeud2 par le type Noeud. Il suffit d'interpréter le nombre (1 ou 2) comme
    le niveau d'un élément dans l'arbre XML.

  3. #3
    Membre Expert
    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
    Par défaut
    Est-ce que les noeuds type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Modules  name= "blabla" >
    seront toujours à la même profondeur (le même nombre de parents)?

    PS : pas le droit aux accent dans le nom des élements et attributs.

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 26
    Par défaut
    Citation Envoyé par Morbo Voir le message
    Est-ce que les noeuds type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Modules  name= "blabla" >
    seront toujours à la même profondeur (le même nombre de parents)?

    PS : pas le droit aux accent dans le nom des élements et attributs.
    Oui les noeuds type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <Module  name= "blabla" >
    seront toujours à la même profondeur.

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 26
    Par défaut [XSL] Récupération des attributs parents
    J'ai chercher partout sur internet, et je n'ai pas trouver le moyen de récupérer mes valeurs.

    ParentName

    ParentParentName

    J'ai peut être tout faux dans ma démarche...

    Le problème est que si je fais un apply-template sur le premier noeud Elements.
    Mon Fichier csv ne contient pas tous les noms de modules.

    Et si j'applique mon template au niveau des modules j'ai tous les noms mais je n'arrive pas a avoir les élements.

    Ah la la la je galère vraiment là lol

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 26
    Par défaut
    Personne a une idée ?

    Je suis pas un pro en XSL ni XPATH, j'essaie de me débrouiller mais là je suis bloqué.

    ça se trouve, je n'ai pas pensé a un truc évident pour vous.

  7. #7
    Membre Expert
    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
    Par défaut
    Et un truc comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="Module">
    <xsl:value-of select="@name"/>,<xsl:value-of select="../../*/@name"/>,<xsl:value-of select="../../../../*/@name"/>
    </xsl:template>

  8. #8
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par Morbo Voir le message
    PS : pas le droit aux accent dans le nom des élements et attributs.
    Précisons : les accents dans les noms d'éléments, attributs, entités et namespaces, c'est vraiment chercher les ennuis pour rien.
    Mais en principe, c'est autorisé. Après il faut voir si les outils s'y retrouvent.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    26
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Juin 2010
    Messages : 26
    Par défaut
    Désolé j'ai une erreur sur mon fichier, (corrigé en Gras ci dessous)
    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
    <Noeud1>
           <Noeud2 name="Variable1">
                 <Elements>
                       <Element name="parentparentname" >
                             < Eléments >
                                   < Élément name="parentname1">
                                        <Modules>
                                              <Module  name= "test1" >
                                                  .
                                                  .
                                              <Module  name= "testN" >
                                         </Modules>
                                    </Élément>
     
                                   < Élément name="parentname2">
                                        <Modules>
                                              <Module  name= "test1">
                                                  .
                                                  .
                                              <Module  name= "testN">
                                         </Modules>
                                   </Élément>
                            </Éléments>
                       </Élément>
                 </Éléments>
           </Noeud2>
    </Noeud1>
    si mon noeud contexte est <Module/>, pour récupérer :
    Parentname =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="../Modules/Élément/@name"/>
    ParentParentname =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="../Modules/Élément/Éléments/Élément/@name"/>
    Est ce bon ?

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 20/05/2008, 15h28
  2. Récupération des attributs d'un noeud
    Par masseur dans le forum XML/XSL et SOAP
    Réponses: 6
    Dernier message: 31/03/2008, 17h51
  3. [Spring WEBFLOW] Récupération des attributs
    Par cameleon2002 dans le forum Spring Web
    Réponses: 1
    Dernier message: 18/03/2008, 11h02
  4. [DOM XML] Récupération des attributs dans un flux xml
    Par opeo dans le forum Bibliothèques et frameworks
    Réponses: 5
    Dernier message: 11/04/2007, 17h35
  5. Réponses: 4
    Dernier message: 26/04/2005, 11h35

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