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 :

selection noeud en fonction des enfants


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Femme Profil pro
    XML
    Inscrit en
    février 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : XML

    Informations forums :
    Inscription : février 2022
    Messages : 3
    Points : 1
    Points
    1
    Par défaut selection noeud en fonction des enfants
    bonjour tout le monde,

    Dans le XML suivant, j'aimerais sélectionner les "a" ayant pour enfant seulement "b", ensuite les "a" avec seulement "b" et "d"... ( la liste des balises dans le fichier d'origine est plutôt longue et je dois chercher différents cas)
    Pour l'instant le Xpath que j'utilise est //a[b][count(*) = count(b)]. Existe-t-il un moyen plus simple en Xpath de dire Je voudrais tous les "a" avec seulement "b" ?

    Merci par avance

    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
    <doc>
    <a>
          <b></b>
          <c></c>
          <d></d>
       </a>
       <a>
          <b></b>
          <d></d>
       </a>
       <a>
          <b></b>
          <c></c>
       </a>
       <a>
          <b></b>
       </a>
       <a>
          <e></e>
       </a>
    </doc>

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 558
    Points : 2 731
    Points
    2 731
    Par défaut
    Pour l'instant le Xpath que j'utilise est //a[b][count(*) = count(b)] .
    Oui, c'est une conception valable.
    Existe-t-il un moyen plus simple en Xpath de dire Je voudrai tous les "a" avec seulement "b" ?
    Des moyens plus simples ? je ne sais pas; c'est souvent relatifs. Pourtant, je peux écrire un alternatif si ça vous inspire.
    Code xpath : Sélectionner tout - Visualiser dans une fenêtre à part
    //a[b][not(*[local-name()!='b'])]
    Du même fil d'idée, un xpath de dire tous les "a" avec seulement "b" et "d" comme enfants ...
    Code xpath : Sélectionner tout - Visualiser dans une fenêtre à part
    //a[b][d][not(*[local-name()!='b' and local-name()!='d'])]
    Voilà !

  3. #3
    Nouveau Candidat au Club
    Femme Profil pro
    XML
    Inscrit en
    février 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : XML

    Informations forums :
    Inscription : février 2022
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    merci pour la réponse. J'avais pensé à cette alternative. Je l'ai éliminé car je trouvais rébarbatif d'écrire not... X fois (je dois faire des stats sur une 15 d'ensemble possible) :-)
    J'avais espéré une écriture simple voulant dire rien sauf :-)
    comme : tout sauf b : //(a[*] except a[b])

    Encore merci

  4. #4
    Membre émérite Avatar de tsuji
    Inscrit en
    octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 558
    Points : 2 731
    Points
    2 731
    Par défaut
    Dans ce cas, ça dépend la version de xslt. Si on travaille avec xslt 2+, on peut écrire quelque chose de ce genre, plus assimilable à l'écriture de xquery.
    Pour b seulement comme enfants:
    Code xslt2+ : Sélectionner tout - Visualiser dans une fenêtre à part
    //a[b][every $n in * satisfies local-name($n)=('b')]
    et pour b et d seulement comme enfants:
    Code xslt2+ : Sélectionner tout - Visualiser dans une fenêtre à part
    //a[b][d][every $n in * satisfies local-name($n)=('b','d')]
    Voilà !

  5. #5
    Nouveau Candidat au Club
    Femme Profil pro
    XML
    Inscrit en
    février 2022
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : XML

    Informations forums :
    Inscription : février 2022
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    c'est exactement cela que je cherchais. Un grand merci !!!!

Discussions similaires

  1. [XSLT] Elaguer des noeuds en fonction des petits-fils
    Par Willl dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 23/12/2009, 11h37
  2. [Xpath] Sélectionner les noeuds parents en fonctions des enfents
    Par xrcr9709 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 27/04/2008, 18h12
  3. Treview et noeuds en fonction des utilisateurs
    Par Michelk12 dans le forum ASP.NET
    Réponses: 2
    Dernier message: 30/10/2007, 09h52
  4. [DOM] savoir si un noeud a des enfants avec hasChildNode
    Par starr dans le forum Bibliothèques et frameworks
    Réponses: 9
    Dernier message: 24/07/2007, 00h10
  5. [JDOM] Récupération des enfants d'un noeud
    Par GLDavid dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 12/10/2005, 11h11

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