XML -- TP 3 : XPath
Méthodologie
Pour tester le résultat d'une expression XPath, nous utiliserons
deux techniques dans ce TP :
Exercice 1: XPath
Fichier: cd.xml, cd.dtd
On considère des documents XML correspondant à la
description d'une collection de CD audio. Le fichier
cd.xml donne un exemple de document contenant une seule
entrée (un seul CD). Une collection est un document valide vis-à-vis de la DTD
cd.dtd :
<!ELEMENT CDlist ((CD)+)>
<!ELEMENT CD (composer, (performance)+, publisher, (length)?)>
<!ELEMENT performance (composition, (soloist)?, (orchestra, conductor)?)>
<!ELEMENT composer (#PCDATA)>
<!ELEMENT publisher (#PCDATA)>
<!ELEMENT length (#PCDATA)>
<!ELEMENT composition (#PCDATA)>
<!ELEMENT soloist (#PCDATA)>
<!ELEMENT orchestra (#PCDATA)>
<!ELEMENT conductor (#PCDATA)>
Commencez par valider le document xml par rapport à sa DTD à l'aide d'Exchanger XML Lite.
Trouvez ensuite les expressions XPath qui retournent les
informations suivantes (on suppose que le contexte initial est
l'élément racine de nom CDlist). Vous les testerez avec Exchanger
XML Lite, puis vous écrirez une feuille de style xsl permettant
d'afficher l'ensemble des réponses.
-
Question 1:
toutes les compositions
-
Question 2:
toutes les compositions ayant un "soloist"
-
Question 3:
toutes les performances avec un seul "orchestra" mais
pas de "soloist"
-
Question 4:
tous les soloists ayant joué avec le London Symphony
Orchestra sur un CD publié par Deutsche Grammophon
-
Question 5:
tous les CDs comportant des performances du London
Symphony Orchestra
Exercice 2: XPath (encore)
Fichiers: - booker.xml
Le fichier booker.xml contient une liste de livres (les
gagnants du fameux booker prize) avec leur auteur et l'année de
l'obtention du prix. Trouvez les expressions XPath qui retournent
les informations suivantes et présentez vos réponses dans une feuille
de style XSL :
-
Question 1:
le cinquième livre dans la liste
-
Question 2:
l'auteur du sixième livre dans la liste
-
Question 3:
le titre du livre qui a gagné en 2000
-
Question 4:
le nom de l'auteur du livre intitulé
"Possession"
-
Question 5:
le titre des livres dont "J M Coetzee" est
l'auteur
-
Question 6:
le nom de tous les auteurs qui ont obtenu un prix depuis
1995
-
Question 7:
le nombre total de prix décernés
Exercice 3: XPath et DTD
On s'intéresse à une application de calendrier qui utilise des
données sous le format suivant: un calendrier est une séquence
d'événements. Chaque événement a une date et une description. Un
événement peut ou bien avoir une heure et une durée, ou bien
n'avoir aucune de ces deux dernières informations. Un événement
peut aussi avoir une répétition, qui est une valeur au choix parmi
'semaine', 'mois' et 'année'. La répétition peut être bornée dans
le temps (jusqu'à une date fixée, ou après un certain nombre
d'occurrences), ou bien être indéfinie. La répétition par défaut
d'un événement est 'semaine', continuant indéfiniment.
-
Question 1:
Définir une DTD pour les documents calendrier et écrivez
un document XML contenant quelques types d'événement différents
qui soit valide pour ce type. Vous validerez votre document à
l'aide d'Exchanger XML Lite par exemple.
-
Question 2:
Proposez une expression XPath pour sélectionner tous les
événements ayant une répétition annuelle, vis-à-vis de la DTD que
vous avez définie.