TP - des expressions XPath dans un répertoire
Après l’apprentissage de l’API DOM sans une réelle pratique, il est temps de corriger le tir ! Ce nouveau TP sera donc l’occasion d’écrire plusieurs expressions XPath destinées à extraire les informations d’un répertoire contenu dans un document XML.
Bon courage ! 😉
L’énoncé
Le document XML
Une fois de plus, c’est avec un répertoire téléphonique que nous allons travailler.
Voici les informations que l’on connaît pour chaque personne :
- Son sexe (homme ou femme).
- Son nom.
- Son prénom.
- Son adresse.
- Un ou plusieurs numéros de téléphone (téléphone portable, fixe, bureau, etc.).
- Aucune ou plusieurs adresses e-mail (adresse personnelle, professionnelle, etc.).
Voici maintenant le document XML qui va nous servir de support :
<?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>
Les expressions à écrire
Voici donc la liste des expressions XPath à écrire :
- Sélectionner tous les nœuds descendants du deuxième nœud
personne
. - Sélectionner le nœud
personne
correspondant à l’individu ayant au moins 2 numéros de téléphone. - Sélectionner tous les nœuds
personne
. - Sélectionner le deuxième nœud
personne
dont le pays de domiciliation est la France. - Sélectionner tous les nœuds
personne
de sexe masculin le pays de domiciliation est les Etats-Unis.
C’est à vous de jouer ! 😉
Une solution
Comme à chaque fois, je vous fais part de ma solution.
Expression n°1
Le but de cette première expression était de sélectionner tous les nœuds descendants du deuxième nœud personne
:
/repertoire/personne[position()=2]/descendant::*
Expression n°2
Le but de cette expression était de sélectionner le nœud personne
correspondant à un individu ayant au moins 2 numéros de téléphone :
/repertoire/personne[count(telephones/telephone) > 1]
Expression n°3
Le but de cette troisième expression était de sélectionner tous les nœuds personne
:
/repertoire/personne
ou encore :
//personne
Expression n°4
Le but de cette expression était de sélectionner le deuxième nœud personne
dont le pays de domiciliation est la France :
/repertoire/personne[adresse/pays="FRANCE"][position()=2]
Expression n°5
Le but de la dernière expression était de sélectionner tous les nœuds personne
de sexe masculin le pays de domiciliation est les Etats-Unis :
/repertoire/personne[@sexe="masculin"][adresse/pays="USA"]
Ce cours vous plait ?
Retrouvez ce cours en livre physique sur Amazon !