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 :

Récuperer la valeur d'un attribut lorsque celui ci est présent dans un élément frère à son parent


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Avril 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Avril 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Récuperer la valeur d'un attribut lorsque celui ci est présent dans un élément frère à son parent
    Bonjour,

    Je rencontre un problème qui me bloque depuis maintenant 2 jours.
    J'ai un élément contenant plusieurs éléments possédant eux, des attributs. Il arrive parfois que cet attribut soit aussi contenu dans un élément de même niveau que celui du parent où on peut le retrouver.
    Je voudrais faire une liste de tous ces attributs concernés. Malheuresement, je ne parviens pas à comparer les attributs d'un sous-élément aux attributs des noeuds frère à son parent.
    Je ne parviens qu'à faire la comparaison entre les attributs de parent à fils malheuresement.

    Voici un petit bout de code xml pour illustrer le propos.

    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
     
              <sucrerie nom="chocolat">
                 <type nom="chocolat au lait"/> 
                 <type nom="chocolat noir"/>
                 <type nom="chocolat blanc"/>
              </sucrerie>
     
             <sucrerie nom="chocolat au lait">
               <type nom="chocolat aux amendes"/>
               <type nom="chocolat au riz"/>
               ....
            </sucrerie>
     
           <sucrerie nom="bonbon">
             .....
           </sucrerie>
    Vous l'aurez compris, ce que je souhaites c'est de récolter dans ce petit exemple la valeur de l'attribut type ou nom lorsqu'on retrouve la même valeur dans l'attribut nom de sucrerie et l'attribut nom de type. Donc ici en l'occurence je veux récupérer "chocolat au lait".

    Je voudrais une solution me permettant de comparer ces attributs (à noter que les enfants d'une balise sucrerie n'auront pas d'attribut possédant le même nom que le sien, il s'agit juste de ses noeuds frère qui eux ont parfois le même nom)


    Merci d'avance pour votre aide


    PS : si ma demande vous parait flou je préciserai bien sûr ^^

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    C'est pas mal, mais il n'y a pas de liste en XPath/XSLT, et "un moyen de comparer" ça veut rien dire si on précise pas comparer quoi et quoi.

    Donc je suppose que ce qui manque dans ta question, c'est le document que tu dois obtenir à la fin.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Avril 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Avril 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour !

    Mon objectif est de créer un xslt me permetant de créer un fichier .txt en sortie qui me sort la liste des attributs "nom" qui possède la même valeur entre les attributs des balises "type" et les attributs des balises "sucrerie".

    Le problème que je veux soulever c'est que je ne parviens pas à comparer l'attribut d'un élément "type" avec l'attribut d'un élément "sucrerie" qui n'est pas son parent ^^

    Une fonction qui me permettrait de faire ça ?

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    je t'ai dit qu'on a besoin du résultat obtenu à la fin, et tu ne fais que parler de choses et d'autres au lieu de montrer ça.

    Exemple de ce qui nous aurait permis de t'aider :

    Citation Envoyé par Une manière qui marche de s'expliquer
    Le fichier que je veux obtenir à la fin, c'est ce fichier texte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    chocolat
    - chocolat noir
    - chocolat blanc
     
    chocolat au lait
    - chocolat aux amendes
    - chocolat au riz
    La section chocolat ne contient pas "chocolat au lait", parce qu'il y a aussi une section "chocolat au lait".

    Je ne sais pas comment faire pour repérer dans mon traitement de <sucrerie nom="chocolat"> que quand je tombe sur <type nom="chocolat au lait"/>, je ne dois pas le mettre parce qu'il existe un élément <sucrerie> qui a le même nom "chocolat au lait".

    je t'ai dit que comparer des choses, ça n'a de sens que quand on a, "cette chose là, que je vous montre ici, je veux la comparer à cette chose-ci, que je vous montre là." Mais ce n'est pas ce que tu nous expliques, et donc personne ne peut se faire une idée de ce que tu as en tête.

    Exemple de ce qui nous aurait permis de t'aider :

    Citation Envoyé par Une manière qui marche de s'expliquer
    Quand je tombe sur <type nom="chocolat au lait"/> qui est sous <sucrerie>, je ne sais pas comment comparer l'attribut nom="chocolat au lait" à l'attribut nom dans <sucrerie nom="chocolat au lait"> qui est un autre élément <sucrerie>, pour voir que ce sont les mêmes et donc que je ne dois pas traiter ce <type> parce qu'il sera traité en tant que <sucrerie>.
    Je sais pas trop à quoi tu t'attendais en répétant les mêmes choses après que j'ai expliqué en quoi elles ne suffisaient pas. J'espère que ces exemples t'aideront à réaliser en quoi tu n'étais pas clair et comment faire pour être clair.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Avril 2018
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 33
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur validation

    Informations forums :
    Inscription : Avril 2018
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour !

    Okay désolé de mon manque de clarté. Je vais tenter d'être plus clair sur ce que je souhaite obtenir à partir de mon XML.


    Ce que je souhaite c'est d'avoir en résultat un fichier texte qui me liste tout les attributs commun à sucrerie et à type.
    A partir de mon petit exemple ça donnerait juste un fichier texte qui contient "chocolat au lait" dedans.


    Pour ce que je ne parviens pas à faire je reprends ton exemple d'explication en le modifiant un petit peu.
    Quand je tombe sur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <type nom="chocolat au lait"/>
    qui est sous <sucrerie>, je ne sais pas comment comparer l'attribut nom="chocolat au lait" à l'attribut nom dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <sucrerie nom="chocolat au lait">
    qui est un autre élément <sucrerie>, pour voir que ce sont les mêmes et donc que je dois lister le nom de cet attribut commun aux deux éléments dans un fichier .txt en sortie
    En gros je veux un moyen de retrouver les attributs commun pour lister la valeur de l'attribut dans un .txt en sortie.
    Est-ce-que mon objectif est assez clair ? ^^

    Merci d'avance

  6. #6
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    oui c'est bien, mais il fallait un exemple plus complet qu'un résultat qui ne contient qu'une ligne, voyons !

    Bon, je vais partir du principe que :

    - chaque ligne ne doit apparaître qu'une fois au plus dans le résultat.
    - les éléments <sucrerie> sont uniques, ce sont les <type> qui ne le sont pas forcément.

    Donc la solution est de :
    - parcourir chaque élément <sucrerie>
    - pour chacun d'eux, vérifier si oui ou non il faut produire une ligne avec son nom.
    - pour ça on doit chercher s'il existe quelque part un <type> du même nom.

    Donc ta question, comment exprimer "est-ce qu'il existe quelque part un <type> de même nom" ça s'exprime comme ça :

    Le code qui exprime la solution donnée au-dessus, étant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:template match="//sucrerie">
      <xsl:if test="@nom = //type/@nom">
        <xsl:value-of select="@nom"/>
      </xsl:if>
    </xsl:template>
    Autre manière de le faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="//sucrerie[@nom = //type/@nom]">
      <xsl:value-of select="@nom"/>
    </xsl:template>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. [XQUERY] Récuperer la valeur d'un attribut
    Par pitchu dans le forum XQUERY/SGBD
    Réponses: 2
    Dernier message: 16/10/2016, 22h41
  2. Réponses: 0
    Dernier message: 02/07/2009, 12h20
  3. [Custom Tags] Récuperer la valeur d'un attribut
    Par buchir dans le forum Taglibs
    Réponses: 18
    Dernier message: 09/03/2009, 14h05
  4. afficher une valeur sur une feuille lorsqu'une checkbox est cochée
    Par chrnoe dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/12/2008, 14h39
  5. [struts][html:link] récuperer la valeur d'un attribut
    Par jamal_b dans le forum Struts 1
    Réponses: 5
    Dernier message: 07/04/2006, 18h38

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