• 20 heures
  • Facile

Ce cours est visible gratuitement en ligne.

Ce cours existe en livre papier.

course.header.alt.is_certifying

J'ai tout compris !

Mis à jour le 23/09/2019

TP : des expressions XPath dans un répertoire

Connectez-vous ou inscrivez-vous gratuitement pour bénéficier de toutes les fonctionnalités de ce cours !

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"]
Exemple de certificat de réussite
Exemple de certificat de réussite