XML -- TP 7 : Outil eXist
Méthodologie
Au cours de ce TP, nous utiliserons l'outil
eXist afin de mettre en place un
site web fondé sur une base de données XML. Cet outil nous permettra
d'administrer la base de données en
- intégrant des documents XML,
- interrogeant la base données (Xquery),
- modifiant la base de données (XQuery Update),
- appliquant des feuilles de style aux documents produits (XSLT).
Cet outil propose une implémentation de XQuery, accompagnée de
nombreuses fonctionnalités telles que plusieurs interfaces
web. Développé en Java, il est également possible d'utiliser ses
librairies dans des programmes Java.
Installation de
l'outil
L'outil, s'il est installé dans son ensemble,
prend environ 100 Mo. Vous devrez donc l'installer dans l'espace
temporaire (/tmp). Commencez par télécharger
l'archive Java de
l'outil. Exécutez-la avec la commande :
java -jar eXist-1.4.1-rev15155.jar
. Pour lancer l'outil,
exécutez, dans le répertoire eXist/bin
, la commande
startup.sh
. Celle-ci démarre le serveur gérant la base de
données. Elle lance également l'interface web, disponible à l'adresse
suivante :
http://localhost:8080/exist/.
Documentation
Une fois l'outil installé et le serveur web démarré, toute la
documentation sur l'outil est accessible à l'adresse
http://localhost:8080/exist/
(copie locale du site internet).
En particulier les points suivants sont particulièrement intéressants
:
Un premier site
exemple
Dans les exercices suivants, nous utiliserons
comme exemple un site très simple permettant la gestion d'une base de
données de films, suivant le cadre du
fichier films.xml.
Afin de télécharger cet exemple,
récupérez d'une part l'archive site.zip
contenant les fichiers html nécessaires, et d'autre part l'archive
BD.zip contenant les fichiers XQuery
permettant de manipuler la base de données. Vous pouvez décompressez
la première archive où vous le souhaitez. En revanche, la seconde
archive contient des fichiers utilisés par l'outil eXist et doit être
décompressée dans le dossier eXist/webapp/
correspondant
à l'interface web de l'outil. En particulier, les modifications que
vous ferez sur ces fichiers devront être sauvegardées ! (car ces
fichiers vont se trouver dans /tmp
)
Exercice 1 : Utilisation de
eXist
Le but de cet exercice est de tester le site de gestion de la BD de
films et d'étudier et comprendre sa structure. Pour chacune des
fonctionnalités du site, testez-la et lisez le code sources des pages
correspondantes. Vous expliquerez brièvement les liens (appels) entre
les pages.
Initialisation
Affichage via XQuery
Interrogation
Application d'une transformation XSLT
Mise à jour de la BD
Exercice 2 : Extensions
Nous considérons dans cet exercice un certain nombre d'extensions du
site web présenté précédemment.
- Affichage via XQuery :
Modifiez l'affichage réalisé
par XQuery en intégrant le pays du film et son année de
production et en ne précisant pas un champ s'il est vide.
- Requête XQuery :
Etendez la page de requête
en autorisant une recherche sur le pays de réalisation du
film.
Dans le fichier query.xqy,
isolez une fonction sélectionnant la forêt des éléments FILM
vérifiant la contrainte. Utilisez cette fonction pour
afficher qu'il n'y a aucune réponse si cette liste est vide,
et sinon conserver l'affichage actuel.
(Option) Etendez la page de
requête en autorisant une recherche sur le réalisateur du
film.
(Option) En vous inspirant
de l'exemple Bibliographie 2, proposez une recherche plus
souple relevant tous les éléments contenant le mot saisi par
l'utilisateur.
- Transformation XSLT :
Observez le résultat de la
transformation XSLT, et analysez les imperfections (on
regardera le code source de la page produite). Comparez avec
l'affichage obtenu en plaçant l'appel à la feuille de style
dans le document XML (en processing instruction). Faites une
sauvegarde du fichier affiche.xsl puis corrigez les
imperfections en modifiant cette feuille de style.
(Option) Afin d'éviter ces
problèmes d'affichage, une autre solution est de produire
directement un fichier XML contenant en en-tête l'appel à la
feuille de style XSLT. Mettez en oeuvre cette
technique.
- Mise à jour :
Etendez la page de mise à
jour en autorisant la définition du pays de réalisation du
film.
(Option) Etendez la page de
mise à jour en autorisant la définition du réalisateur du
film. Si ce réalisateur n'existe dans la base de données, il
faudra le rajouter au sein d'un élément ARTISTE.
(Option) Etendez la page de
mise à jour en autorisant la définition d'un ensemble de
rôles. L'utilisateur pourra choisir d'ajouter autant de
rôles qu'il le souhaite.
- Initialisation de la base de données :
(Option) Proposez à
l'utilisateur de choisir lui-même le fichier qu'il souhaite
utiliser pour initialiser la base de données. Indication:
regarder la balise HTML input avec le champ
type="file".