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] Sélectionner le n-ième élément d'une sélection


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut [XPATH] Sélectionner le n-ième élément d'une sélection
    Bonjour,

    Voila le problème: Je parse un fichier hr-xml en utilisant XPATH
    Voici la structure du bloc concerné:

    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
    <Resume>
      <StructuredXMLResume>
        <ContactInfo>
          <ContactMethod>
            <Telephone>
              <FormattedNumber>01.01.01.01.01</FormattedNumber>
            </Telephone>
          </ContactMethod>
          <ContactMethod>
            <Mobile>
              <FormattedNumber>06.06.06.06.06</FormattedNumber>
            </Mobile>
          </ContactMethod>
          <ContactMethod>
            <Telephone>
              <FormattedNumber>02.02.02.02.02</FormattedNumber>
            </Telephone>
          </ContactMethod>
    Bref, c'est simplifié mais on a une succession de noeuds ContactMethod suivi de Telephone, ou autre chose (Mobile, Fax, etc).

    Maintenant je veux construire des requêtes XPATH qui me renvoient les numéros de téléphone fixe (donc ici 01.01.01.01.01 et 02.02.02.02.02)

    J'ai commencé par écrire cette requête:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //Resume/StructuredXMLResume/ContactInfo/ContactMethod/Telephone[1]/FormattedNumber
    Qui me renvoie bien le premier numéro

    Maintenant si je veux accéder au 2e numéro je tente:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //Resume/StructuredXMLResume/ContactInfo/ContactMethod/Telephone[2]/FormattedNumber
    Ca ne me renvoie rien, ce qui est normal vu qu'il cherche un 2e noeud Telephone dans un bloc ContactMethod. Or moi ce que je cherche c'est le 2e bloc ContactMethod contenant un fils Telephone.

    Comment j'écris ma requête?

    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,

    On peut définir plusieurs prédicats pour un même élément :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //Resume/StructuredXMLResume/ContactInfo/ContactMethod[Telephone][2]/Telephone/FormattedNumber
    L'application de chaque prédicat renvoie un nodeset sur lequel est appliqué le prédicat suivant. Ainsi, ContactMethod[Telephone][2] n'est pas équivalent à ContactMethod[Telephone and position() = 2]. Dans la première expression on sélectionne d'abord parmi les ContactMethod ceux ayant un fils Telephone, puis on prend le deuxième item de cette sélection ; dans la deuxième expression, parmi un ensemble de ContactMethod on ne sélectionne que le deuxième et à condition qu'il ait un fils Telephone.
    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
    Futur Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 10
    Points : 9
    Points
    9
    Par défaut
    Merci beaucoup, c'est exactement ça!

    Je tatonne encore en XPath mais ça me semble bien puissant.

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

Discussions similaires

  1. Afficher le n-ième élément d'une liste
    Par achta dans le forum Débuter
    Réponses: 4
    Dernier message: 24/07/2009, 12h46
  2. Accéder au n-ième élément d'une map
    Par remooz dans le forum SL & STL
    Réponses: 6
    Dernier message: 01/06/2009, 10h20
  3. Réponses: 1
    Dernier message: 27/11/2008, 14h00
  4. [MySQL] Sélectionner le n ième enregistrement d'une table
    Par zetta dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/07/2006, 13h00

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