:: Enseignements :: ESIPE :: E5INFO :: 2007-2008 :: eXtended Markup Language ::
[LOGO]

Ingrid Bergman et XSLT


Dans ce TP, toujours autour d'Ingrid Bergman, nous proposons une initiation à XSLT.

Saxon

Les feuilles de style XSLT seront appliquées aux fichiers XML à l'aide de Saxon. Saxon est sous la forme d'une archive JAR qui se trouve dans /usr/share/java/saxon.jar.

Ecrivez le script bash saxon ci-dessous et placez-le dans le répertoire bin de votre répertoire utilisateur. N'oubliez pas de placer ce répertoire dans votre variable d'environnement PATH s'il n'y est pas déjà. N'oubliez pas de donner des permissions d'exécution (chmod 700 saxon, par exemple).
java -cp /usr/share/java/saxon.jar com.icl.saxon.StyleSheet $@

Exercice 1 - Réorganisation

On va réorganiser le document bergman.xml du précédent TP à l'aide d'une feuille de style XSLT, de manière à produire un nouveau document XML, bergman2.xml, qui contiendra les mêmes informations mais de manière mieux organisée. Le nouveau document aura pour élément racine bergman qui lui-même contiendra un élément filmographie qui comprendra un ensemble d'éléments film.

Remplacer tout élément role par un élément film qui contient les attributs suivants :
  • filmref, tiré de role ;
  • img et pdf, tirés de resume ;
  • realisateur, tiré de resume ;
  • date, tiré de role ;
  • misc, tiré de role ;
  • personnage, tiré de role,
et les sous-éléments suivants (dans cet ordre) :
  • titre, avec comme contenu celui de role ;
  • resume, avec comme contenu celui de resume ;
  • autant de alias, que nécessaires.

Chaque élément alias conserve son contenu et ses attributs date et pays eventuels. Exemple :
<resumes>
  ...
  <resume filmref="f29" img="29.jpg" pdf="29.pdf" realisateur="Jean Renoir">
  Polnish countess Elena falls in love to a Frensh radical party's candidate, a
  general, in pre world war I Paris, but another officer pines for her.
  </resume>
  ...
</resumes>
<aliases>
  ...
  <alias filmref="f29" date="1956">Elena and Her Men</alias>
  <alias filmref="f29" date="1956" pays="Italy">Eliana e gli uomini</alias>
  <alias filmref="f29" date="1956" pays="UK">Paris Does Strange Things</alias>
  ...
</aliases>
<roles>
  ...
  <role filmref="f29" personnage="Elena Sokorowska" date="1956"> Elena et les hommes
  ...
</roles>
devient
<film filmref="f29" img="29.jpg" pdf="29.pdf" realisateur="Jean Renoir" date="1956"
  personnage="Elena Sokorowska">
  <titre>Elena et les hommes</titre>
  <resume>
     Polnish countess Elena falls in love to a French radical party's candidate, a
     general, in pre world war I Paris, but another officer pines for her.
  </resume>
  <alias date="1956">Elena and Her Men</alias>
  <alias date="1956" pays="Italy">Eliana e gli uomini</alias>
  <alias date="1956" pays="UK">Paris Does Strange Things</alias> 
</film>
L' élément perso doit être recopié tel quel.

Sauvegardez le résultat de la transformation XSLT précédente dans un fichier bergman2.xml, à l'aide de la commande :
$ saxon -o bergman2.xml bergman.xml <mafeuilledestyle.xsl>

Exercice 2 - Produire du code XHTML

On va écrire une nouvelle feuille de style XSLT (bergman3.xsl) pour convertir ce nouveau document XML en XHTML.

Filmographie Chaque film sera présenté comme une paire de cellules d'un tableau, celle de gauche contenant l'image associée au film et celle de droite contenant les diverses informations. Ces informations seront presentées de la manière suivante : le titre du film en caractères gras de grande taille, suivi de la date entre parenthèses ; en dessous, les mots "Réalisé par" suivis du nom du réalisateur ; en dessous, les mots "Personnage interpreté :" suivis du nom du personnage interprété. Suit le résumé, et, à la fin, les alias éventuels, en italiques, suivis de la date et du pays éventuel entre parenthèses.

Les infos personnelles Mettre un titre avant chaque unité (biographie, mariages, infos, citations). Les entrées de mariage, info, citation, forment des listes (énumerative pour les mariages, non-énumerative sinon). Dans le cas des mariages, on affichera également les dates de début et de fin, dans le cas des citations, leurs auteurs.

Génération de la table des matières Pour faciliter la lecture de cette page HTML, on produira une table des matières de la forme suivante :
Filmographie
   premier film (date)
   ...
   dernier film (date)
Informations personnelles
   Biographie
   Mariages
   Divers
   Citations
où chaque entrée est un lien hypertexte vers la rubrique appropriée. Comme mot-clé commun entre le lien et sa cible, on utilisera soit les valeurs des attributs filmref, soit des mots-clés générés automatiquement par XSLT.