:: Enseignements :: Master :: M2 :: 2008-2009 :: XSLT et schémas XML ::
[LOGO]

Restructuration - 2


Le but de ce TD est d'écrire des scripts XSLT qui font des restructurations complètes de fichiers XML.

Exercice 1 - Index alphabétique

Faire un programme XSLT qui produit à partir d'un fichier de filmographie (e.g. bergman.xml) un document XHTML qui recense, dans l'ordre alphabétique, les noms de personnes citées comme réalisateur de film, mari de l'actrice ou auteur d'une citation.

Chaque personne citée devra apparaître une seule fois dans la liste de personnes. Pour chaque nom, lister les films (dans le cas d'un réalisateur), le mariage avec les dates (dans le cas d'un mari), les citations (dans le cas d'un auteur de citations). Utiliser des indexeurs (xsl:key).

Dans un deuxième temps, on remplacera au moins un apply-templates par un for-each.

Exercice 2 - Liens XHTML

Faire un script XSLT qui produit à partir d'un fichier de CV européen (e.g. betty.xml) un document XHTML qui recense tous les textes qui apparaissent traduits dans le CV XML (ils sont signalés par l'attribut lang dans le fichier de CV).

Présenter tous les textes dans une langue, par ordre alphabétique, puis les textes dans l'autre langue, également par ordre alphabétique. Faire un lien de chaque texte vers sa traduction si elle existe. Passer au script un paramètre qui indique quelle langue apparaît en premier.

Exercice 3 - Structuration d'un document

Faire un script XSLT qui produit à partir du fichier d'horaires de métro ligne7.xml un document XML structuré sous la forme suivante :
  • un élément racine stations ;
  • un niveau au-dessous, des éléments station, un pour chaque station de métro de la ligne, dans l'ordre, avec le nom de la station comme texte inclus dans l'élément ;
  • chaque élément station possède deux attributs, premier et dernier, qui donnent les horaires du premier et du dernier passage de la journée (en semaine). On passe d'une journée à la suivante à 4 heures du matin.

Indication : définir un indexeur (xsl:key). Chaque fois qu'on identifie dans le document source des noeuds p et f tels que, dans le document résultat, l'équivalent de p devra être le père de l'équivalent de f, le noeud f doit être indexé par l'identifiant de p.