site de Fabien Torre, université de Lille


Requêtes XPath en pratique

Exercices sur le langage XPath.

On travaille avec xmllint en mode shell :

xmllint --shell mondoc.xml

On dispose alors de la commande xpath permettant d'évaluer des requêtes XPath mais aussi plusieurs autres inspirées du shell de Unix :

  • cd et pwd : se déplacer et savoir où l'on est ;
  • ls, dir, cat et du : connaître le contenu du noeud courant ;
  • grep : recherche un texte dans un sous-arbre ;
  • set : remplacer un sous-arbre ;
  • load, save et write : gérer le fichier XML ;
  • bye, exit et quit : sortir de xmllint.

Requêtes sur les articles

Proposer des requêtes XPath permettant de constituer les ensembles suivants à partir du fichier article.xml [ voir ][ récupérer ]

  1. le noeud racine ;
  2. tous les descendants de la racine ;
  3. tous les attributs ;
  4. tous les noeuds de type texte ;
  5. les instructions de traitement présentes ;
  6. les instructions de traitement présentes correspondant à une feuille de style ;
  7. les contenus de tous les paragraphes ;
  8. les paragraphes contenant des aspects importants ;
  9. la référence portant le code siteMarc ;
  10. tous les deuxièmes auteurs (avec et sans la fonction position, puis sans aucune fonction).

En utilisant les fonctions shell de xmllint :

  • se placer dans le corps de l'article ;
  • extraire toutes les références qui y figurent ;
  • retrouver le détail d'une référence.

Dans l'idée d'exprimer des contraintes de clefs, primaire et étrangère, en XML Schéma :

  • se placer à l'endroit adéquat ;
  • extraire toutes les valeurs de clefs primaires ;
  • extraire toutes les valeurs de clefs étrangères.

Requêtes sur les acteurs

Proposer des requêtes XPath permettant de constituer les ensembles suivants à partir du fichier acteurs.xml [ voir ][ récupérer ] :

  1. les éléments acteur ;
  2. le nombre d'acteur décrit dans le document XML ;
  3. tous les commentaires ;
  4. le deuxième des commentaires ;
  5. le premier noeud fils du premier noeud acteur ;
  6. le premier noeud fils du deuxième noeud acteur ;
  7. les deux premiers éléments fils de chaque acteur ;
  8. le dernier élément fils de chaque acteur ;
  9. l'acteur dont l'identifiant est clint ;
  10. l'acteur dont le prénom est Clint ;
  11. les noms des acteurs dont la biographie contient exactement deux paragraphes ;
  12. le titre du deuxième film cité dans le document ;
  13. le deuxième film cité dans le premier paragraphe contenant plus d'un film.

En utilisant les fonctions shell de xmllint :

  • se placer dans la biographie de Hilary Swank ;
  • extraire toutes les références à d'autres acteurs qui y figurent ;
  • pour l'un de ces acteurs, retrouver son nom et som prénom.

Dans l'idée d'exprimer des contraintes de clefs, primaire et étrangère, en XML Schéma :

  • se placer à l'endroit adéquat ;
  • extraire toutes les valeurs de clefs primaires ;
  • extraire toutes les valeurs de clefs étrangères.

Requêtes sur le championnat de football

Proposer des requêtes XPath permettant de constituer les ensembles suivants à partir du fichier foot.xml [ voir ][ récupérer ] :

  1. les journées précédant la 8ème ;
  2. les rencontres de la 4ème journée ;
  3. la première rencontre de chacune des journées ;
  4. l'adversaire de Bastia lors de la journée 10 ;
  5. tous les adversaires de Bastia ;
  6. la liste des matches non joués ;
  7. les matches nuls de Bastia à domicile ;
  8. le nombre et le pourcentage de matches nuls sur l'ensemble du championnat ;
  9. le nombre et le pourcentage de victoires à domicile ;
  10. le nombre et le pourcentage de victoires à l'extérieur.

En utilisant les fonctions shell de xmllint :

  • rejoindre la journée 10 ;
  • afficher l'adversaire de Bastia lors de cette journée ;
  • afficher l'adversaire de Bastia pour la journée suivante.

Dans l'idée d'exprimer une contrainte d'unicité en XML Schéma :

  • se placer à l'endroit adéquat ;
  • extraire toutes les valeurs devant être uniques.

Requêtes sur les brèves

Proposer des requêtes XPath permettant de constituer les ensembles suivants à partir du fichier actu.xml [ voir ][ récupérer ] :

  1. tous les noeuds ;
  2. tous les éléments ;
  3. les adresses web contenues dans le document ;
  4. le nombre de brèves ;
  5. tous les titres de brèves ;
  6. les brèves sur le sport ;
  7. les brèves qui contiennent une photo ;
  8. les brèves dont le titre commence par la lettre D ;
  9. les brèves dont le texte contient le mot marathon ;
  10. tous les éléments qui suivent une brève de type actu.

En utilisant les fonctions shell de xmllint :

  • rejoindre la première brève de type actu ;
  • afficher son titre ;
  • afficher la brève suivante du même type.

Requêtes sur les films

Proposer des requêtes XPath permettant de constituer les ensembles suivants à partir du fichier films.xml [ voir ][ récupérer ] :

  1. le nombre de films disponibles ;
  2. tous les commentaires dans le document ;
  3. les acteurs du deuxième film ;
  4. les titres des films dont la fiche est en anglais ;
  5. le nom du personnage dont l'identifiant est lukemonfils ;
  6. le titre des films sortis en 1981 ;
  7. le nombre de références faites au personnage dont l'identifiant est indy ;
  8. les films sans acteur ;
  9. les films avec plusieurs réalisateurs ;
  10. les titres des films dont le synopsis contient le mot believe.

En utilisant les fonctions shell de xmllint :

  • se placer sur le synopsis de Rocky ;
  • en extraire toutes les références aux personnages ;
  • pour un personnage, afficher son nom, puis l'acteur qui l'incarne.

Dans l'idée d'exprimer des contraintes de clefs, primaire et étrangère, en XML Schéma :

  • se placer à l'endroit adéquat ;
  • extraire toutes les valeurs des clefs primaires ;
  • extraire toutes les valeurs des clefs étrangères.

Requêtes sur les TODO list

Nous disposons d'une DTD (voir, récupérer) et d'un document XML (voir, récupérer) visant à décrire une liste de choses à faire (TODO list). Cette liste est organisée en thème, chaque thème disposant d'une illustration, d'une date limite, d'un titre, de commentaires et naturellement, d'une liste d'actions à effectuer.

Proposer des requêtes XPath permettant de constituer les ensembles suivants à partir du fichier todolist.xml (pour chaque question, proposer au moins deux requêtes distinctes) :

  1. tous les attributs ;
  2. tous les commentaires XML du document ;
  3. tous les noeuds de type texte ;
  4. la valeur du deuxième deadline apparaissant dans le document ;
  5. le premier item du document ;
  6. les item premier dans leur liste ;
  7. les titres dont les listes contiennent des items critiques ;
  8. les titres des todo qui n'ont pas de commentaires associés ;
  9. toutes les urls du document ;
  10. le nombre de paragraphes dans les commentaires du deuxième todo ;
  11. le titre dont l'image associée est sapin.jpg.

Requêtes sur les bandes dessinées

Proposer des requêtes XPath permettant de constituer les ensembles suivants à partir du fichier bd.xml [ voir ][ récupérer ] :

  1. le nombre de bandes dessinées dans la collection ;
  2. les bandes dessinées qui ne font par partie d'une série ;
  3. les titres des séries ;
  4. le nombre d'albums dans la série Lanfeust de Troy ;
  5. toutes les illustrations du document ;
  6. les bandes dessinées de Manu Larcenet ;
  7. l'identifiant d'une personne dont le prénom est Riad ;
  8. les personnes définies avant Manu Larcenet ;
  9. les dates de sortie des bandes-dessinées dont le titre commence par la lettre L ;
  10. les bandes dessinées dont le résumé contient le mot oiseau ;
  11. la deuxième bande dessinée définie dans le document.

En utilisant les fonctions shell de xmllint :

  • se placer au niveau du résumé de la bande dessinée intitulée la vraie vie ;
  • en extraire les noms de personnages ;
  • récupérer la référence de l'illustrateur ;
  • récupérer son nom et son prénom.

Dans l'idée d'exprimer des contraintes de clefs, primaire et étrangère, en XML Schéma :

  • se placer à l'endroit adéquat ;
  • extraire toutes les valeurs des clefs primaires ;
  • extraire toutes les valeurs des clefs étrangères.
Fabien Torre Valid HTML5! Valid CSS!
Accueil > Enseignement > En pratique > Documents numériques > XML > XPath
(contenu mis à jour )
site de Fabien Torre, université de Lille

Description

Survoler un lien de navigation pour lire sa description ici...


Une photo au hasard

En Corse.

Lac de Crenu.

(le 14 juillet 2008)

Troupeau de vaches au lac de Crenu.