Requêtes XPath en pratique
On travaille avec xmllint en mode shell :
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 ]
- le noeud racine ;
- tous les descendants de la racine ;
- tous les attributs ;
- tous les noeuds de type texte ;
- les instructions de traitement présentes ;
- les instructions de traitement présentes correspondant à une feuille de style ;
- les contenus de tous les paragraphes ;
- les paragraphes contenant des aspects importants ;
- la référence portant le code siteMarc ;
- 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 ] :
- les éléments acteur ;
- le nombre d'acteur décrit dans le document XML ;
- tous les commentaires ;
- le deuxième des commentaires ;
- le premier noeud fils du premier noeud acteur ;
- le premier noeud fils du deuxième noeud acteur ;
- les deux premiers éléments fils de chaque acteur ;
- le dernier élément fils de chaque acteur ;
- l'acteur dont l'identifiant est clint ;
- l'acteur dont le prénom est Clint ;
- les noms des acteurs dont la biographie contient exactement deux paragraphes ;
- le titre du deuxième film cité dans le document ;
- 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 ] :
- les journées précédant la 8ème ;
- les rencontres de la 4ème journée ;
- la première rencontre de chacune des journées ;
- l'adversaire de Bastia lors de la journée 10 ;
- tous les adversaires de Bastia ;
- la liste des matches non joués ;
- les matches nuls de Bastia à domicile ;
- le nombre et le pourcentage de matches nuls sur l'ensemble du championnat ;
- le nombre et le pourcentage de victoires à domicile ;
- 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 ] :
- tous les noeuds ;
- tous les éléments ;
- les adresses web contenues dans le document ;
- le nombre de brèves ;
- tous les titres de brèves ;
- les brèves sur le sport ;
- les brèves qui contiennent une photo ;
- les brèves dont le titre commence par la lettre D ;
- les brèves dont le texte contient le mot marathon ;
- 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 ] :
- le nombre de films disponibles ;
- tous les commentaires dans le document ;
- les acteurs du deuxième film ;
- les titres des films dont la fiche est en anglais ;
- le nom du personnage dont l'identifiant est lukemonfils ;
- le titre des films sortis en 1981 ;
- le nombre de références faites au personnage dont l'identifiant est indy ;
- les films sans acteur ;
- les films avec plusieurs réalisateurs ;
- 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) :
- tous les attributs ;
- tous les commentaires XML du document ;
- tous les noeuds de type texte ;
- la valeur du deuxième deadline apparaissant dans le document ;
- le premier item du document ;
- les item premier dans leur liste ;
- les titres dont les listes contiennent des items critiques ;
- les titres des todo qui n'ont pas de commentaires associés ;
- toutes les urls du document ;
- le nombre de paragraphes dans les commentaires du deuxième todo ;
- 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 ] :
- le nombre de bandes dessinées dans la collection ;
- les bandes dessinées qui ne font par partie d'une série ;
- les titres des séries ;
- le nombre d'albums dans la série Lanfeust de Troy ;
- toutes les illustrations du document ;
- les bandes dessinées de Manu Larcenet ;
- l'identifiant d'une personne dont le prénom est Riad ;
- les personnes définies avant Manu Larcenet ;
- les dates de sortie des bandes-dessinées dont le titre commence par la lettre L ;
- les bandes dessinées dont le résumé contient le mot oiseau ;
- 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.