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 :

Problème de prédicat [XPATH 2.0]


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 11
    Par défaut Problème de prédicat
    Bonjour à tous, je suis en train de me casser la tête sur un problème qui me semble tout bête, et pourtant...
    Je m'explique, j'ai le xml suivant :

    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
     
    <root>
      <process>
        <rae>
          <regle name="name1">
            <config>
              <property name="property1">
                     ...
              </property>
            </config>
          </regle>
          <regle name="name2">
            <config>
              <property name="property2">
                     ...
              </property>
            </config>
          </regle>
     
        </rae>
      </process>
    </root>
    Je cherche à récuperer la valeur de l'attribut name de l'élément regle, dont la valeur de l'attribut name de l'élément property est égale à "property1".

    Ma requete xpath est la suivante :
    /root/process/rae/regle/@name[/root/process/rae/regle/config/property/@name='property1']
    Le problème est que cette expression ne me retourne rien.
    Si quelqu'un à une idée, elle est la bienvenue
    Merci !!!

  2. #2
    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
    - C'est un <regle> sur lequel tu veux mettre une condition, donc c'est à regle qu'il faut mettre un predicat :

    Code XPath : Sélectionner tout - Visualiser dans une fenêtre à part
    /root/process/rae/regle[predicat]/@name

    - Ce prédicat doit bien sûr être relatif à l'élément <regle> qu'il veut tester. Donc il ne faut pas y mettre un chemin absolu, il ne faut pas répéter /root/process/rae/regle qui ferait regarder le contenu de tous les <regle> et non pas juste celui que tu essaies de tester.

    - Si le code que tu montres ne renvoie vraiment aucun résultat, alors le code correct n'en renverra pas non plus. Le code que tu montres devrait renvoyer trop de résultats au lieu du seul que tu voulais, pas aucun résultat.

    - Ce n'est pas une question "d'avoir une idée." Les prédicats ça ne se devine pas, il suffit d'apprendre comment ça marche, de la même manière que tu as appris le reste. (Moi c'était un bouquin.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre Expert
    Avatar de Loceka
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    2 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 2 276
    Par défaut
    Pourtant cette requête devrait te retourner quelque chose (tous les attributs @name de regle en l'occurrence), mais pas ce que tu veux.

    Dans ta requête, tu demandes tous les attributs @name de regle étant dans un document où il existe au moins un élément property dont l'attribut @name vaut "property1".

    Si tu veux que l'élément property soit relatif à ton élément regle, il faut passer par un chemin relatif :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /root/process/rae/regle[config/property/@name = 'property1']/@name

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Juillet 2012
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2012
    Messages : 11
    Par défaut
    Merci pour vos explications, j'ai réussi à obtenir le résultat que je veux avec la requete suivante :
    /root/process/rae/regle/@name[../config/property/@name='property1']

    Mais peut-être est-ce un coup de chance ?
    Vu que j'applique le prédicat à @name et non pas à regle.

    Edit : Je passe en résolu

  5. #5
    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 zikolivia Voir le message
    Mais peut-être est-ce un coup de chance ?
    On peut dire ça.

    Citation Envoyé par zikolivia Voir le message
    Vu que j'applique le prédicat à @name et non pas à regle.
    Oui, mais vu que tu le commences par ../ ça remonte d'un cran.
    Ça marche mais... C'est à peu près aussi sensé que faire Paris-Marseille en passant par Tokyo.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

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

Discussions similaires

  1. [XPATH] problème sur des prédicats
    Par Smix007 dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/04/2010, 11h55
  2. [Débutant] Problème de prédicat
    Par pooi1 dans le forum Prolog
    Réponses: 5
    Dernier message: 06/01/2009, 11h31
  3. Petit problème simple de prédicat
    Par Fred_ET dans le forum Prolog
    Réponses: 10
    Dernier message: 02/11/2007, 20h49
  4. Problème d'installation oracle 8.1.7 sous NT
    Par Anonymous dans le forum Installation
    Réponses: 7
    Dernier message: 02/08/2002, 14h18
  5. Problème avec la mémoire virtuelle
    Par Anonymous dans le forum CORBA
    Réponses: 13
    Dernier message: 16/04/2002, 16h10

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