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 :

parcours des nodes filles ? enfin je pense que c'est des filles :)


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut parcours des nodes filles ? enfin je pense que c'est des filles :)
    Bonjour,

    Bon, c'est du Windev mais comme je l'utilise dans le cadre XPATH, je me permets de poster ma question ici

    J'arrive par un XPATH d'aller toute suite vers par exemple MDC/IDC/DEV/"TYPE" ce qui me donne <IPG> comme résultat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    XMLRacine("XML")
    XMLExécuteXPath("XML","//section[@name='MDC']/section[@name='IDC']/section[@name='DEV' or @name='PG']/value[@name='TYPE']")
    XMLDonnée("XML")
    


    Jusqu'ici OK.

    Par contre, je me demandais si à partir de là, pour le 'model'/'serial'/etc...je devais faire à chaque fois la même requête, juste en changeant le @name='.....'
    N'y-a-t'il pas plus "simple"....je cherche a comprendre pourquoi cela ne fonctionne pas si je fais ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    XMLRacine("XML")
    XMLExécuteXPath("XML","//section[@name='MDC']/section[@name='IDC']/section[@name='DEV' or @name='PG']/value[@name='TYPE']")
    XMLDonnée("XML")
    XMLExécuteXPath("XML","*[@name='SERIAL']")
    XMLDonnée("XML")
    



    J'ai essayé pleins de choses : // - ./ - . - .. - et d'autres combaisons possibles mais rien n'y fait...le XMLDonnée me donne pas le résultat souhaité.

    Pourtant je pars du principe que le XMLExécuteXPath se positionne à un endroit précis et que les requêtes suivantes, pourrais débuter de là et non de la racine...

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <test-export creator-version="1.0" creator="Converter" format-version="4.1">
    <dataset> 
    <section name="MDC">
    
    
    <section name="IDC">
    <section name="DEV">
    <value name="TYPE" type="MDC_IDC_ENUM_DEV_TYPE">IPG</value>
    <value name="MODEL" type="String">Stratos</value>
    <value name="SERIAL" type="String">2571592</value>
    <value name="MFG" type="MDC_IDC_ENUM_MFG">xxx</value>
    <value name="IMPLANT_DT" type="DateTime">20100714T000000</value>
    <value name="IMPLANTER" type="String">yyy</value>
    <value name="IMPLANTING_FACILITY" type="String">zzz</value> </section>
    <section name="LEAD">
    <value name="MODEL" type="String">SETROX</value> <value name="SERIAL" type="String">-</value> <value name="MFG" type="MDC_IDC_ENUM_MFG">xxx</value> <value name="POLARITY_TYPE" type="MDC_IDC_ENUM_LEAD_POLARITY_TYPE">BI</value> <value name="LOCATION" type="MDC_IDC_ENUM_LEAD_LOCATION_CHAMBER">RA</value> </section>
    <section name="LEAD">
    etc...
    Je ne veux pas juste me positionner sur l'un après l'autres (en tout cas pas tout le temps), mais justement être sélectif aussi.

    J'espère avoir été assez claire . Merci d'avance !

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Je ne comprends rien à la syntaxe que tu nous montres, mais j'imagine que c'est du windev normal.

    Ce que tu demandes, est en principe possible et facile dans la plupart des langages qui gèrent XPath. Normalement quand on fait une requête XPath, on indique sur quel node on veut l'appliquer. Le node peut être le document XML entier, ou bien un élément qu'il contient et qu'on a déjà obtenu et faisant des recherches dans le document.

    Là, dans ton code, je vois que tu indiques le document entier. Donc logiquement, à chaque fois tu reviens au début et il faut refaire la requête entière. Enfin, sauf si windev fait les choses autrement, j'en sais rien.

    En tout cas, si tu pars de ton node <value name="TYPE"> et que de là, tu veux sélectionner un voisin, il faut d'abord remonter au parent puis sélectionner comme d'hab':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ../value[@name = 'SERIAL']
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    425
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2006
    Messages : 425
    Points : 129
    Points
    129
    Par défaut
    Bien c'est ce que pensais aussi...je ne sais pas si c'est dû à WinDeV mais je n'arrive, dans ce cas précis pas à récupérer le résultat. Bizarre...

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 547
    Points : 21 602
    Points
    21 602
    Par défaut
    Bah, "dû à Windev"... Tu fais comment, pour dire que tu veux partir du node précédemment obtenu ?

    Dans 7 langages que je connais, c'est pas compliqué, au lieu de lui filer le document entier je lui donne le node duquel je veux partir. Mais je panne rien du tout au langage que tu utilises.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 8
    Dernier message: 29/08/2013, 18h14
  2. Réponses: 65
    Dernier message: 31/08/2012, 12h05
  3. Réponses: 5
    Dernier message: 06/09/2011, 21h03
  4. Réponses: 7
    Dernier message: 30/03/2007, 15h58

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