Précédent Remonter Suivant

0.6.5  XPath

L'objectif de cet exercice est la familiarisation avec XPath. Pour cela nous allons utiliser le parseur XML xmllint qui permet également de naviguer dans une document XML en utilisant des expressions XPath. Pour cela, le parseur est lancé en mode shell avec la commande suivante (les autres options sont affichées en éxécutant xmllint sans paramètre) :
prompt> xmllint --shell Fichier.xml
Les commandes les plus importantes du shell xmllint sont : Le paramètre expXpath est optionnelle pour les commandes ls et cat, qui s'appliquent alors au noeud contexte.

Voici l'extrait d'une session de navigation avec le document Vertigo.xml :
prompt> xmllint --shell Vertigo.xml
/ > base
Vertigo.xml
/ > du
FILM
  TITRE
  AUTEUR
  ANNEE
  GENRE
  PAYS
  RESUME
/ > ls */TITRE
t--        7 Vertigo
/ > cd FILM
FILM > ls
t--        5
---        1 TITRE
t--        5
---        1 AUTEUR
t--        5
---        1 ANNEE
t--        5
---        1 GENRE
t--        6
---        1 PAYS
t--        5
---        1 RESUME
t--        1          
FILM > cd *[1]
TITRE > cat
<TITRE>Vertigo</TITRE>
TITRE > pwd
/FILM/TITRE
TITRE > cd ../..
/ > cat //*[contains(text(),'Scottie')]         
-------
<RESUME>Scottie Ferguson, ancien inspecteur de police, est sujet
       au vertige depuis qu'il a vu mourir son collègue. Elster, son
       ami, le charge de surveiller sa femme, Madeleine, ayant des
       tendances suicidaires. Amoureux de la jeune femme Scottie ne
       remarque pas le piège qui se trame autour de lui et dont il va
       être la victime... 
    </RESUME>
/ > bye
On lance le programme en mode shell et on affiche d'abord l'URL du document avec la commande base. La structure principale du document est affichée avec la commande du et la commande ls */TITRE affiche le contenu des noeuds trouvé par l'expression */TITRE. L'élément racine devient le nouveau noeud contexte avec la commande cd FILM. Ce noeud à 13 fils (commande ls) dont 7 sont de type Text et 6 de type Element. On passe ensuite au premier sous-élément et on affiche sa représentation sérialisée avec la commande cat. Le chemin vers le noeud contexte est maintenant /FILM/TITRE. On retourne vers le noeud racine et on affiche la représentation sérialisée de tous les noeuds avec un fils texte contenant la chaîne de caractères Scottie. Voici une façon amusante d'apprendre XPath !

Exercice:
  1. Téléchargez le document suivant : FilmsArtistes.xml
  2. Vérifiez avec la commande xmllint si ce document est bien formé.
  3. Lancez xmllint en mode shell avec le document FilmsArtistes.xml.
  4. Affichez la structure du document avec la commande du.
  5. Allez dans l'élément racine avec la commande cd.
  6. Allez dans le premier fils de l'élément racine.
  7. Affichez la structure de cet élément.
  8. Affichez les éléments fils de cet élément.
  9. Affichez le contenu textuel de cet élément.
  10. Affichez tous les titres de films dans le document.
  11. Les titres des films d'horreur.
  12. Le résumé d'Alien.
  13. Les titres des films avec James Stewart. ATTENTION, envoyez cette réponse à dgram.at.cnam.fr avec comme sujet "tvalc 1 <votre nom>". Vous pouvez utiliser la commande mail dgram.at.cnam.fr en vous laissant guider. Mettez un point seul en début de ligne pour indiquer la fin de votre message;
  14. les titres des films avec James Stewart et Kim Novak.
  15. Les titres des films avec un résumé ?
  16. Les titres des films sans résumé ?
  17. Quel est l'identifiant du metteur en scène du film Vertigo?
  18. Quel rôle joue Harvey Keitel dans le film Reservoir dogs ?
  19. Quel est le dernier film du document ?
  20. Quel est le titre du film qui précède immédiatement le film Shining (dans l'ordre du document).
  21. Qui a mis en scène le film Eyes Wide Shut ?
  22. Donnez les titres des films qui contiennent un 'V' (utiliser la fonction contains)
  23. Donner les noeuds qui ont exactement trois descendants (utiliser la fonction count).
  24. Donner les noeuds dont le nom contient la chaîne 'TU' (fonction name)

Précédent Remonter Suivant