Vous êtes sur la page 1sur 6

Université de Laghouat Base de données et Web

Master d’informatique première année Année : 2014/2015


TD3 : XPath

Exercice 1 : soient les documents XML :

X1.xml:
<?xml version="1.0" encoding="UTF-8"?>
<A>
<B>
<E>4</E>
<E>3</E>
</B>
<B>
<E>1</E>
</B>
<C>
<F>a</F>
</C>
<E>2</E>
</A>

X2.xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<A>
<B>
<E>4</E>
<E>3</E>
</B>
<B></B>
<C>
<F>a</F>
<F>b</F>
</C>
</A>

Questions :
1. Donnez le résultat des expressions XPath suivantes
(a) X1.xml /child::A/child::B
(b) X1.xml /child::A/child::*[1]
(c) X2.xml /descendant::C/child::*
(d) X2.xml /descendant::B[child::E]
2. Donnez les expressions XPath pour trouver dans le document X1 :
(a) tous les éléments de type E.
(b) tous les enfants d’éléments de type B.
(c) tous les nœuds de type texte (feuilles).

-1-
Exercice2 : Soit le document XML suivant :

<livre titre="Mon livre">


<auteurs>
<auteur nom="nom1" prenom="prenom1"/>
<auteur nom="nom2" prenom="prenom2"/>
</auteurs>
<sections>
<section titre="Section1">
<chapitre titre="Chapitre1">
<paragraphe>Premier paragraphe</paragraphe>
<paragraphe>Deuxième paragraphe</paragraphe>
</chapitre>
</section>
<section titre="Section2">
<chapitre titre="Chapitre1">
<paragraphe>Premier paragraphe</paragraphe>
<paragraphe>Deuxième paragraphe</paragraphe>
</chapitre>
</section>
</sections>
</livre>

Questions : Écrivez les expressions XPath suivantes au format non abrégé :

1. trouver la liste des chapitres de la première section ;


2. trouver la liste des attributs du premier auteur ;
3. trouver la valeur (fonction string) de l’attribut nom du deuxième auteur ;
4. trouver la liste des chapitres contenant deux paragraphes ;
5. trouver la liste des chapitres dont un paragraphe possède le mot Premier ;
6. trouver la liste des sections ayant un chapitre ;
7. trouver la liste des éléments ayant un seul attribut ;
8. trouver la liste des éléments ayant un ancêtre sections, sous deux formes ;
9. trouver la liste des attributs titre ;
10. trouver la liste des éléments ayant deux fils et pas d’attributs ;
11. trouver la liste des sections sans paragraphe ;
12. trouver la liste des éléments dont le texte contient le mot paragraphe.

Écrivez les expressions XPath suivantes au format abrégé :

1. trouver la liste de nœuds auteur ;


2. trouver la liste de tous les nœuds section ;
3. trouver la liste des chapitres de la première section ;
4. trouver la liste des attributs du premier auteur ;
5. trouver la valeur de l’attribut nom du deuxième auteur ;
6. trouver la liste des sections avec deux chapitres ;
7. trouver la liste des paragraphes dont le parent a pour titre Chapitre1.

-2-
Exercice 3 : Sur le document ci-dessous, à l'aide du langage XPath,
répondez aux questions suivantes.
<?xml version="1.0" encoding="UTF-8"?>
<liste_auteurs>
<auteur num_auteur="1">
<nom_auteur>Japrisot</nom_auteur>
<prenom_auteur>Sébastien</prenom_auteur>
<age>48</age>
<nationalite>francaise</nationalite>
</auteur>
<auteur num_auteur="3">
<nom_auteur>Dostoïevski</nom_auteur>
<nationalite>russe</nationalite>
</auteur>
<auteur num_auteur="4">
<nom_auteur>Sfeir</nom_auteur>
<prenom_auteur>Antoine</prenom_auteur>
<age>65</age>
<nationalite>francaise</nationalite>
</auteur>
<auteur num_auteur="5">
<nom_auteur>Malraux</nom_auteur>
<prenom_auteur>André</prenom_auteur>
<nationalite>francaise</nationalite>
</auteur>
<auteur num_auteur="9">
<nom_auteur>Green</nom_auteur>
<prenom_auteur>Julien</prenom_auteur>
<nationalite>francaise</nationalite>
</auteur>
Questions :
</liste_auteurs>

1. Affichez tous les éléments « prenom_auteur ».


2. Affichez tous les éléments « auteur » dont l'attribut « num_auteur » est
supérieur strictement à la valeur 4.
3. Affichez la moyenne des âges.
4. Comptez le nombre d'auteurs.
5. Quel est l'auteur en 3ème position dans le document ?
6. Affichez le contenu des éléments « nationalite ».
7. Quelle est la somme totale des âges des auteurs ?

Rappel: la moyenne, le comptage, la somme et le contenu textuel d'un


élément s'obtiennent à l'aide des fonctions avg(...), count(...), sum(...) et
text().

-3-
Exercice 4 : Soit le document XML suivant :

<?xml version="1.0" encoding="UTF-8"?>


<bibliographie>
<livre>
<titre>A la recherche du temps perdu</titre>
<auteurs>
<auteur nom="Proust" prenom="Marcel"/>
<auteur nom="Proust" prenom="Marcelle"/>
</auteurs>
<edition>
<nom>Le plat pays</nom>
<lieu type="edition">Belgique</lieu>
<lieu type="impression">Louvain</lieu>
<isbn>1965894456</isbn>
<dateDepot>1905</dateDepot>
</edition>
<avis>Tres bon livre surtout pour les phénomènes Itératifs </avis>
</livre>
<livre>
<titre>Un balcon en forêt</titre>
<auteurs>
<auteur nom="Gracq" prenom="Julien"/>
</auteurs>
<edition>
<nom>José Corti</nom>
<lieu type="edition">Paris</lieu>
<lieu type="impression">Mayenne</lieu>
<isbn>978-2-7143-0333-2</isbn>
<dateDepot>2008</dateDepot>
</edition>
</livre>
</bibliographie>

Questions : Écrire les expressions XPath suivantes:

1. trouver la liste des éléments ayant un ancêtre livre ;


2. trouver la liste des noms des auteurs ;
3. trouver la valeur (fonction string) de l’attribut nom du deuxième auteur ;
4. trouver la liste des livres contenant deux auteurs ;
5. afficher le texte de la balise avis ;
6. trouver la liste des lieux ayant comme valeur de type "edition".

-4-
Exercice 5 : Voici un document sur les films.

<?xml version="1.0" encoding="UTF-8"?>


<films>
<movie>
<title>Match Point</title>
<year>2005</year>
<country>USA</country>
<genre>Crime</genre>
<director id=’14’ >
<last_name>Allen</last_name>
<first_name>Woody</first_name>
<birth_date>1935</birth_date>
</director>
<actor id=’15’ >
<first_name>Jonathan</first_name>
<last_name>Rhys Meyers</last_name>
<birth_date>1977</birth_date>
<role>Chris Wilton</role>
</actor>
<actor id=’16’ >
<first_name>Scarlett</first_name>
<last_name>Johansson</last_name>
<birth_date>1984</birth_date><role>Nola Rice</role>
</actor>
</movie>

</films>

Écrivez les requêtes XPath suivantes :

1. Les titres des films où joue Scarlett Johansson.


2. Les rôles joués par Michel Blanc
3. Le premier acteur dans la distribution de chaque film.
4. Les réalisateurs des films où jouent à la fois Michel Blanc ET Thierry
Lhermite.
5. Les titres des films où le directeur joue aussi un rôle comme acteur.

-5-
Exercice 6 : voici un document XML avec des résultats du deuxième tour
des élections présidentielles de quatre bureaux de vote.

<?xml version="1.0"?>
<Votes>
<Ville nom="Cachan" dept="94">
<Bureau num="1">
<Candidat nom="Toto" voix="3398"/><Candidat nom="Dupont" voix="6589"/>
</Bureau>
<Bureau num="2">
<Candidat nom="Toto" voix="5645"/><Candidat nom="Dupont" voix="4090"/>
</Bureau>
</Ville>
<Ville nom="L’Hay" dept="94">
<Bureau num="1">
<Candidat nom="Toto" voix="2067"/><Candidat nom="Dupont" voix="4089"/>
</Bureau>
</Ville>
<Ville nom="Bagneux" dept="92">
<Bureau num="1">
<Candidat nom="Toto" voix="4723"/><Candidat nom="Dupont" voix="5167"/>
</Bureau>
</Ville>
</Votes>

Questions : Traduisez les requêtes SQL suivantes en requêtes


XPath :

1. select distinct bureau from Votes


2. select distinct candidat from Votes
3. select voix from Votes where ville=’Cachan’ and
candidat=’Dupont’
4. select ville from Votes where candidat="Toto" and voix >
5000
5. select A.candidat from Votes A, Votes B
where A.voix > B.voix
and A.ville=B.ville
and A.bureau=B.bureau
6. select ville from Votes
where candidat=’Dupont’
group by ville
having sum(voix) > 8000;

-6-