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 :

tous les "par" qui ne descendent pas de "tab" [XPATH 1.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre habitué
    Homme Profil pro
    Architecte senior Java EE/Spring - ScrumMaster
    Inscrit en
    Juin 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Architecte senior Java EE/Spring - ScrumMaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 229
    Points : 162
    Points
    162
    Par défaut tous les "par" qui ne descendent pas de "tab"
    Bonjour à tous ; je vous soumet un p'tit pb qui ne nous paraissait pas devoir poser de pb...

    Nous souhaitons extraire d'un arbre tous les éléments dont le nom est "par", exclusion faite de ceux qui auraient comme ancêtre un élément nommé "tab".
    Voici l'expression que nous avons bricolée mais qui n'exclue pas les enfants de "tab" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //*[name()='par' and not(ancestor::*[name()='tab'])]
    Je précise une petite chose curieuse ; nous avons bien sûr commencé par écrire "//par[...]", mais même "//par" ne nous renvoyait rien (!) ; probablement un pb de namespace, mais nous ne préférons pas les préciser car ils ne dépendent pas de nous et les alias peuvent changer.

    Et un arbre type :
    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
     
    <e1>
      <par id="1" />
      <tab>
        <par id="2" />
        <par id="3" />
      </tab>
      <e2>
        <par id="4" />
      </e2>
      <par id="5">
        <tab>
          <par id="6" />
          <par id="7" />
        </tab>
      </par>
    </e1>
    Résultat attendu : une liste contenant 3 nœuds "par" avec les id 1, 4 & 5
    Si quelqu'un pouvait me remettre dans le droit chemin, je lui en serais bien reconnaissant ! Merci d'avance.

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    j'imagine que l'arbre présenté en exemple est une version simplifiée de l'arbre réel. Il n'y aurait pas d'espaces de noms dans l'arbre original ?
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre habitué
    Homme Profil pro
    Architecte senior Java EE/Spring - ScrumMaster
    Inscrit en
    Juin 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Architecte senior Java EE/Spring - ScrumMaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 229
    Points : 162
    Points
    162
    Par défaut
    Si, tt à fait ; mais nous ne maîtrisons pas les alias ; il s'agit d'un document assez complexe qui passe dans plusieurs moulinettes et se retrouve avec des alias ns1, ns2, etc. qui peuvent changer.

  4. #4
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    C'est à cause de ça que la notation en //par et en ancestor::tab ne marchait pas.

    Remplacer name() par local-name() devrait aider... C'est bien moche quand même.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre habitué
    Homme Profil pro
    Architecte senior Java EE/Spring - ScrumMaster
    Inscrit en
    Juin 2010
    Messages
    229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France

    Informations professionnelles :
    Activité : Architecte senior Java EE/Spring - ScrumMaster
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2010
    Messages : 229
    Points : 162
    Points
    162
    Par défaut OUPS !
    Bon, désolé (au temps pour moi) ; en fait le développeur croyait que la balise ancètre était "tab"... mais NON, en fait elle s'appelle "table"...

    Du coup, ça marche bcp mieux avec le bon nom de balise ! Mais merci quand même.

    Concernant les namespaces, y a-t-il un moyen d'écrire une expression du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //*:par[not(ancestor::*:tab)]
    ça serait plus élégant ; mais nous n'y sommes pas parvenus.

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

Discussions similaires

  1. Comment remplacer tous les vides par un tiret.
    Par Abdelinho dans le forum Word
    Réponses: 1
    Dernier message: 03/08/2010, 20h20
  2. Comment afficher tous les utilisateurs par défaut d'Oracle
    Par oladele.liamidi dans le forum Administration
    Réponses: 2
    Dernier message: 11/01/2010, 08h26
  3. Réponses: 6
    Dernier message: 25/09/2009, 12h03
  4. Remettre tous les icônes par défaut
    Par koKoTis dans le forum Windows XP
    Réponses: 4
    Dernier message: 19/12/2006, 19h38

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