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 :

Xpath et l'axe ancestor


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 46
    Points : 24
    Points
    24
    Par défaut Xpath et l'axe ancestor
    Bonjour à tous,

    je m'entraine actuellement à faire des requêtes Xpath au travers de divers sujets trouvés sur le net.

    Et il y en a certaines que je n'arrive pas à faire (comptage de noeuds principalement)

    je me permet donc de soliciter votre aide:
    voici le XML:
    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
    23
    24
    25
    26
    27
    28
    29
     
    <?xml version="1.0" ?>
    <AAA>
      <BBB>
        <CCC id="1">
          <aa> </aa>
          <bb> </bb>
        </CCC>
        <CCC id="2">
          <aa> </aa>
          <bb> </bb>
        </CCC>
        <CCC id="3">
          <aa> </aa>
          <bb> </bb>
        </CCC>
        <CCC id="4">
          <aa> </aa>
          <bb> </bb>
        </CCC>
        <CCC id="5i">
          <aa> </aa>
          <bb> </bb>
        </CCC>
        <CCC id="6">
          <aa> </aa>
        </CCC>
      </BBB>
    </AAA>
    et voici les requêtes que j'aimerais faire:

    -retourner le plus petit ancêtre commun aux éléments CCC id="4" et CCC id="6" (j'ai lu qu'on pouvait utiliser "intersect" en XPATH2.0 mais je n'ai pas trouvé comment faire en XPATH1.0 qui ne supporte apparemment pas le intersect)

    - compter le nombre d'elements définis entre la fermeture de l'element CCC avec l'id="4" et l'ouverture de l'element CCC avec l'id="6"

    - calculer la distance entre 2 noeuds quand l'un est ancêtre de l'autre

    -calculer la distance entre deux noeuds quelquonques

    Merci d'avance

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 635
    Points
    21 635
    Par défaut
    Citation Envoyé par joejoe1 Voir le message
    -retourner le plus petit ancêtre commun aux éléments CCC id="4" et CCC id="6" (j'ai lu qu'on pouvait utiliser "intersect" en XPATH2.0 mais je n'ai pas trouvé comment faire en XPATH1.0 qui ne supporte apparemment pas le intersect)
    Pas trivial. Je n'aime déjà pas l'idée d'en avoir besoin.

    Voici ce qu'on pourrait faire : ensemble des ancêtres de CCC id="4" qui ont un CCC id="6" dans leurs descendants. Prendre le dernier dans l'ordre du document, c'est le plus petit commun.

    - compter le nombre d'elements définis entre la fermeture de l'element CCC avec l'id="4" et l'ouverture de l'element CCC avec l'id="6"
    sélectionner les voisins suivant CCC id="4" qui n'ont pas, dans leurs voisins précédents, CCC id="6", et qui ne sont pas eux-mêmes CCC id="6".
    count() sur le tout.

    - calculer la distance entre 2 noeuds quand l'un est ancêtre de l'autre

    -calculer la distance entre deux noeuds quelquonques
    C'est quoi, une distance ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2008
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 46
    Points : 24
    Points
    24
    Par défaut
    Merci pour les pistes que tu m'as données.
    Pour les distances, c'est en fait le "chemin" qui existe entre 2 noeuds dans un arbre:

    a
    / \
    b c
    |
    d

    ici, la distance entre d et a est de 2 tout comme la distance entre c et b qui correspond à la somme des distances entre chaque noeud et la racine.

    EDIT: j'ai effectivement reussi à faire les requetes en suivant tes indications^ encore merci

Discussions similaires

  1. XPath 1.0: Types, axes et éléments
    Par Erwy dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 17/11/2015, 23h00
  2. [XPATH] Le rôle des axes
    Par naou18 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 01/09/2010, 19h35
  3. [XPATH] combiner ancestor et preceding
    Par snipon dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 06/02/2008, 10h57
  4. XPATH ancestor:: child:: parent::
    Par guiyomh dans le forum Flash
    Réponses: 1
    Dernier message: 13/04/2007, 17h53
  5. Cours en Français sur XML-XSL et XPath
    Par Community Management dans le forum XSL/XSLT/XPATH
    Réponses: 0
    Dernier message: 25/04/2002, 15h46

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