3éme année licence informatique Université Mohamed Chérif
Données semi-structurées Messaadia
Travaux pratique Année universitaire 2021-2022
TP N°2 : Exercices pratiques sur le langage XPath
Exercice 1: Requêtes sur les articles
Ecrire des requêtes XPath sur l’éditeur XMLSpy permettant de constituer les
ensembles suivants à partir du fichier [Link] (en attachement) :
1. le nœud racine
2. tous les descendants de la racine
3. tous les attributs
4. tous les nœuds 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 siteUnivMedCherifMessaadia
10. tous les deuxièmes auteurs (avec et sans la fonction position, puis sans
aucune fonction).
Exercice 2: Requêtes sur le championnat de football
Ecrire des requêtes XPath sur l’éditeur XMLSpy permettant de constituer les
ensembles suivants à partir du fichier [Link] (en attachement) :
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.
Exercice 3: Requêtes sur les filmes
Ecrire des requêtes XPath sur l’éditeur XMLSpy permettant de constituer les
ensembles suivants à partir du fichier [Link] (en attachement) :
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.
3éme année licence informatique Université Mohamed Chérif
Données semi-structurées Messaadia
Travaux pratique Année universitaire 2021-2022
Solution TP N°2 : Exercices pratiques sur le langage XPath
Exercice 1: Requêtes sur les articles
Ecrire des requêtes XPath sur l’éditeur XMLSpy permettant de constituer les
ensembles suivants à partir du fichier [Link] (en attachement) :
1. le nœud racine
/
ou pour l'élément racine :
/child::*
/*
2. tous les descendants de la racine
/descendant::node()
//node()
ou à partir de l'élément racine :
/child::*/descendant::node()
/*//node()
3. tous les attributs
/descendant::*/attribute::*
//@*
4. tous les nœuds de type texte
/descendant::text()
//text()
5. les instructions de traitement présentes
/descendant::processing-instruction()
//processing-instruction()
6. les instructions de traitement présentes correspondant à une feuille de
style
/descendant::processing-instruction('xml-stylesheet')
//processing-instruction('xml-stylesheet')
7. les contenus de tous les paragraphes
/descendant::p/child::text()
//p/text()
8. les paragraphes contenant des aspects important
/descendant::p[child::important]
//p[important]
9. la référence portant le code siteUnivMedCherifMessaadia
/descendant::référence[attribute::code='siteUnivMedCherifMessaadia'
]
//référence[@code='siteUnivMedCherifMessaadia']
10. tous les deuxièmes auteurs (avec et sans la fonction position).
/descendant::*/child::auteur[position()=2]
//*/auteur[2]
/descendant::auteur[count(preceding::auteur)=1]
//auteur[count(preceding::auteur)=1]
Exercice 2: Requêtes sur le championnat de football
Ecrire des requêtes XPath sur l’éditeur XMLSpy permettant de constituer les
ensembles suivants à partir du fichier [Link] (en attachement) :
1. les journées précédant la 8ème ;
/descendant::JOURNEE[attribute::NUMERO < 8]
//JOURNEE[@NUMERO < 8]
//JOURNEE[@NUMERO=8]/preceding-sibling::JOURNEE
2. les rencontres de la 4ème journée ;
/descendant::JOURNEE[attribute::NUMERO=4]/child::RENCONTRE
//JOURNEE[@NUMERO=4]/RENCONTRE
3. la première rencontre de chacune des journées ;
/descendant::JOURNEE/child::RENCONTRE[position()=1]
//JOURNEE/RENCONTRE[1]
4. l'adversaire de Bastia lors de la journée 10 ;
/descendant::JOURNEE[attribute::NUMERO=10]/child::RENCONTRE[attri
bute::DOMICILE='Bastia']/attribute::EXTERIEUR
|
/descendant::JOURNEE[attribute::NUMERO=10]/child::RENCONTRE[attri
bute::EXTERIEUR='Bastia']/attribute::DOMICILE
//JOURNEE[@NUMERO=10]/RENCONTRE[@DOMICILE='Bastia']/@EXTERIEUR
| //JOURNEE[@NUMERO=10]/RENCONTRE[@EXTERIEUR='Bastia']/@DOMICILE
5. tous les adversaires de Bastia ;
/descendant::RENCONTRE[attribute::DOMICILE='Bastia']/attribute::E
XTERIEUR
|
/descendant::RENCONTRE[attribute::EXTERIEUR='Bastia']/attribute::
DOMICILE
//RENCONTRE[@DOMICILE='Bastia']/@EXTERIEUR |
//RENCONTRE[@EXTERIEUR='Bastia']/@DOMICILE
6. la liste des matches non joués ;
/descendant::RENCONTRE[attribute::SCORED='-']
//RENCONTRE[@SCORED='-']
7. les matches nuls de Bastia à domicile ;
/descendant::RENCONTRE[attribute::DOMICILE='Bastia' and
attribute::SCORED!='-'
and attribute::SCORED=attribute::SCOREE]
//RENCONTRE[@DOMICILE='Bastia' and @SCORED!='-' and
@SCORED=@SCOREE]
8. le nombre et le pourcentage de matches nuls sur l'ensemble du
championnat ;
100*count(//RENCONTRE[@SCORED!='-' and @SCORED=@SCOREE]) div
count(//RENCONTRE[@SCORED!='-'])
9. le nombre et le pourcentage de victoires à domicile ;
count(//RENCONTRE[@SCORED>@SCOREE])
100*count(//RENCONTRE[@SCORED>@SCOREE])div
count(//RENCONTRE[@SCORED!='-'])
10. le nombre et le pourcentage de victoires à l'extérieur.
count(//RENCONTRE[@SCORED<@SCOREE])
100*count(//RENCONTRE[@SCORED<@SCOREE])div
count(//RENCONTRE[@SCORED!='-'])
Exercice 3: Requêtes sur les filmes
Ecrire des requêtes XPath sur l’éditeur XMLSpy permettant de constituer les
ensembles suivants à partir du fichier [Link] (en attachement) :
1. le nombre de films disponibles ;
count(/descendant::film)
count(//film)
2. tous les commentaires dans le document ;
/descendant::comment()
//comment()
3. les acteurs du deuxième film ;
/child::films/child::film[position()=2]/child::casting/child::act
eur
//film[2]//acteur
4. les titres des films dont la fiche est en anglais ;
/descendant::film[attribute::lang="en"]/child::titre/child::text(
)
//film[@lang="en"]/titre/text()
5. le nom du personnage dont l'identifiant est lukemonfils ;
/descendant::acteur[attribute::id="lukemonfils"]/attribute::perso
nnage
//acteur[@id="lukemonfils"]/@personnage
6. le titre des films sortis en 1981 ;
/descendant::film[child::annee="1981"]/child::titre/child::text()
//film[annee="1981"]/titre
7. le nombre de références faites au personnage dont l'identifiant est indy ;
count(/descendant::perso[attribute::ref="indy"])
count(//perso[@ref="indy"])
8. les films sans acteur ;
/descendant::film[count(child::casting/child::acteur)=0]
//film[count(.//acteur)=0]
9. les films avec plusieurs réalisateurs ;
/descendant::film[contains(child::realisateur,",")]
//film[contains(realisateur,",")]
10. les titres des films dont le synopsis contient le mot believe.
/descendant::film[contains(child::synopsis,"believe")]
//film[contains(synopsis,"believe")]