Bonjour,

je viens d'apprendre comment écrire une requête XPATH. J'ai un petit document XML, le but de la requête est celui-ci:
Sélectionner le deuxième nœud "personne" dont le pays de domiciliation est la France .
(je mets le document XML en premier puis vient la question…)
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<repertoire>
  <!-- John DOE -->
  <personne sexe="masculin">
    <nom>DOE</nom>
    <prenom>John</prenom>
    <adresse>
      <numero>7</numero>
      <voie type="impasse">impasse du chemin</voie>
      <codePostal>75015</codePostal>
      <ville>PARIS</ville>
      <pays>FRANCE</pays>
    </adresse>
    <telephones>
      <telephone type="fixe">01 02 03 04 05</telephone>
      <telephone type="portable">06 07 08 09 10</telephone>
    </telephones>
    <emails>
      <email type="personnel">john.doe@wanadoo.fr</email>
      <email type="professionnel">john.doe@societe.com</email>
    </emails>
  </personne>
 
  <!-- Marie POPPINS -->
  <personne sexe="feminin">
    <nom>POPPINS</nom>
    <prenom>Marie</prenom>
    <adresse>
      <numero>28</numero>
      <voie type="avenue">avenue de la république</voie>
      <codePostal>13005</codePostal>
      <ville>MARSEILLE</ville>
      <pays>FRANCE</pays>
    </adresse>
    <telephones>
      <telephone type="professionnel">04 05 06 07 08</telephone>
    </telephones>
    <emails>
      <email type="professionnel">contact@poppins.fr</email>
    </emails>
  </personne>
 
	<!-- Batte MAN -->
  <personne sexe="masculin">
    <nom>MAN</nom>
    <prenom>Batte</prenom>
    <adresse>
      <numero>24</numero>
      <voie type="avenue">impasse des héros</voie>
      <codePostal>11004</codePostal>
      <ville>GOTHAM CITY</ville>
      <pays>USA</pays>
    </adresse>
    <telephones>
      <telephone type="professionnel">01 03 05 07 09</telephone>
    </telephones>
  </personne>
</repertoire>
J'ai trouvé un requête qui fonctionne:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
/repertoire/personne[adresse/pays='FRANCE'][position()=2]
J'en ai essayé une autre:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
/repertoire/personne/adresse[pays='FRANCE']/parent::personne[position()=2]
Pourquoi cette deuxième requête ne fonctionne-t-elle pas ?

Avec un autre exercice, dont le but était:
Sélectionner le nœud "personne" correspondant à l'individu ayant au moins 2 numéros de téléphone.
J'avais fait comme ceci:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
/child::repertoire/child::personne/child::telephones[count(telephone)>=2]/parent::personne
Ça avait l'air de marcher, le résultat était celui attendu, mais je ne suis pas certain que ce soit juste…


Merci à vous.