:: Enseignements :: Master :: M2 :: 2007-2008 :: XML-XSLT ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Ingrid Bergman |
Dans ce TP autour de la filmographie d'Ingrid Bergman, nous verrons la conception de DTD et une initiation aux requêtes XPath. L'objectif à plus long terme est d'effectuer la conversion des données XML en XHTML, que nous verrons lors du prochain TP.
Exercice 1 - Corrections
Récupérez le fichier et testez à l'aide de la commande suivante s'il est bien formé :
$ xmllint minibergman.xml --noout
Des messages d'erreurs sont alors affichés indiquant la nature et la position des différentes erreurs trouvées. Editez le fichier et corrigez les erreurs reportées pour obtenir un document XML bien formé.
Exercice 2 - XPath
L'option
--shell du programme
xmllint permet de naviguer dans l'arborescence du document XML de manière
intéractive et d'y effectuer des requettes XPath. Par exemple, en écrivant :
$ xmllint --shell bergman.xml
/ > cat /filmographie/perso/naissance/@annee
on récupère la valeur de
l'attribut
annee, de l'unique élément
naissance, fils de l'élément
perso, lui même fils de l'élément
filmographie. De même, en écrivant l'instruction :
/ > cat /filmographie/aliases/alias[@filmref='f7']
on
récupère trois réponses : les trois éléments alias qui ont
f7 pour valeur de leur attribut
filmref.
Enfin, la commande cd suivi d'une expression XPath, permet de changer la
valeur du noeud courant, ce qui permet de tester des expressions XPath relativement à
un noeud donné.
Expressions XPath sur le fichier
bergman.xml
- Récupérer les années des trois mariages d'Ingrid Bergman.
- Récupérer sa biographie.
- Récupérer le titre original du film où elle joue le personnage de
Charlotte.
- Récupérer alors le nom du réalisateur de ce film en utilisant la valeur de
l'attribut filmref
- Récupérer les pays qui correspondent aux titres de films de ce même
film.
- Récupérer les titres originaux des 5 films sortis en salle après 1980.
- Récupérer les personnages qu'elle joue dans ces 5 films.
- Récupérer les citations dont elle est à l'origine.
- Récupérer les dates des titres pour lesquels on a une indication de
pays.
- Récupérer les dates des titres pour lesquels on n'a pas d'indication de
pays.
- Récupérer les noms des réalisateurs de documentaires (c'est-a-dire dont le
résumé soit [Documentaire]).
- Même question, mais éviter les réalisateurs dont on ne connaît pas le nom,
c'est-à-dire ceux où on a un point d'interrogation à la place du nom.
- Récupérer les titres des films romantiques (les films dont le résumé contient
le mot
love ou
romantic)
Exercice 3 - Initiation à XSLT
On va s'initier à la programmation XSLT en écrivant des feuilles de style simples. Le programme
xsltproc permet d'appliquer une feuille de style XSLT sur un document XML. La syntaxe générale de la ligne de commande est la suivante :
$ xsltproc <feuilledestyle.xsl> <document.xml>
Le résultat de la transformation s'affiche alors à l'écran, on peut rediriger la sortie vers un fichier avec l'option
-o (comme avec gcc).
Recherche d'informations
Ecrire une première feuille de style qui extrait les informations contenues dans les éléments role du fichier
bergman.xml. La sortie du programme sera un fichier texte dans lequel chaque ligne contiendra le titre, l'année et le nom du personnage interprété pour un film donné, sous la forme :
...
Murder on the Orient Express (1974) : Greta
Salute to Orson Welles, A (1975) : Herself
...
Dans un second temps, on triera l'affichage des lignes du film le plus ancien au film le plus récent.
Réorganisation
On va écrire une nouvelle feuille de style
films.xsl qui à partir du fichier
bergman.xml va créer un nouveau document XML qui contiendra les informations contenues dans les éléments
role mais organisées différemment.
Pour chaque élément
role dans
bergman.xml, on veut créer un élément
film dans le document résultat qui contienne les attributs
date et
filmref tirés de
role et ainsi que deux sous-éléments :
-
titre, avec pour contenu celui de l'élément role,
- et personnage, avec pour contenu le nom du personnage interprété tiré de l'attribut personnage de l'élément role.
Ainsi, par exemple l'élément :
<role filmref="f23" personnage="Paula Tessier" date="1961">Goodbye Again</role>
deviendra :
<film filmref="f23" date="1961">
<titre>Goodbye Again</titre>
<personnage>Paula Tessier</personnage>
</film>
Sauver le résultat de la transformation dans un nouveau fichier
films.xml avec la commande :
$ xstlproc -o films.xml films.xsl bergman.xml
Mise en page HTML (si vous avez le temps)
On va mettre en page au format HTML les informations contenues dans le nouveau fichier films.xml à l'aide d'une nouvelle feuille de style XSLT. Chaque film sera présenté par une paire de cellules d'un tableau, celle de gauche contenant le titre et l'année du film et celle de droite contenant le nom du personnage interprété.
© Université de Marne-la-Vallée