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

Restructuration - 1


Le but de ce TD est d'écrire des scripts XSLT modulaires permettant de restructurer des fichiers XML.

Exercice 1 - Programme mystérieux

Appliquer le script XSLT mystere.xsl sur le catalogue de plantes plant_catalog.xml. Qu'observe-t-on? Expliquer. Modifier le code pour n'afficher que les éléments BOTANICAL.

Dans un deuxième temps, adapter votre code pour qu'il puisse traiter le document plant_catalog_jr.xml.

Exercice 2 - Ajouter une information extraite d'un document extérieur

Faire un script XSLT qui s’applique à plant_catalog_jr.xml et produit plant_catalog_family.xml. Le script doit ajouter dans chaque élément PLANT un élément FAMILY qui donne le nom de la famille à laquelle appartient la plante. Exemple :
	<PLANT>
		<COMMON>Bloodroot</COMMON>
		<BOTANICAL>
			<GENUS>Sanguinaria</GENUS>
			<SPECIES>canadensis</SPECIES>
		</BOTANICAL>
		<ZONE>4</ZONE>
		<LIGHT>Mostly Shady</LIGHT>
		<PRICE unit="euro">2.44</PRICE>
		<AVAILABILITY>031599</AVAILABILITY>
		<FAMILY>Papaveraceae</FAMILY>
	</PLANT>
			
Les familles sont indiquées dans le document plant_families.xml. Vous utiliserez une constante globale pour stocker le noeud CLASSIFICATION de ce document.

Exercice 3 - Instructions conditionnelles

Ecrire un script XSLT qui affichera la liste des noms anglais de plantes du catalogue plant_catalog_jr.xml. En face de chacun de ces noms, on donnera, entre parenthèses, la mention "(expensive)" si son prix est supérieur à 3 euros, et la mention "(cheap)" sinon.

Exercice 4 - Définir une fonction Xpath

Ecrire un script XSLT qui recopie l'arborescence du catalogue plant_catalog_jr.xml, mais avec les prix en dollars.

Il vous est demandé d'utiliser une fonction nommée u:euro2dollar qui prend comme paramètre une valeur en euros et la convertit en dollars. Cette fonction sera implémentée dans un autre script utilities.xsl. On supposera qu'un euro vaut approximativement 1.4 dollars.

Exercice 5 - Produire du code XHTML

On va écrire un nouveau script XSLT pour convertir bergman.xml en XHTML. Le document XHTML comprendra deux sections : Sommaire et Films. Les titres de ces sections seront dans des balises <h1>.

La section Sommaire contiendra la liste des noms originaux des films d'ingrid Bergman. L'année sera indiquée entre parenthèses. Le titre sera en italique. Vous utiliserez les balises standard des listes non numérotées en XHTML : <ul> et <li>.

La section Films comprendra l'ensemble des fiches détaillées sur les différents films. Une fiche détaillée contiendra :
  • le titre (dans une balise <h2>) ;
  • au-dessous, le texte "Sorti en" suivi de l'année de sortie du film ;
  • au-dessous, le texte "Réalisé par" suivi du nom du réalisateur ;
  • au-dessous, le texte "Personnage interprété :" suivi du nom du personnage interprété ;
  • puis, le texte "Résumé :" suivi d'un retour à ligne et du résumé, si ce dernier existe.

A chaque film du sommaire, on associera un lien hypertexte vers la rubrique appropriée. Comme identifiant commun entre le lien et sa cible, on utilisera soit les valeurs des attributs filmref, soit des ientifiants engendrés automatiquement par XSLT.

  1. Dans une première version, vous utiliserez des appels de règles par noeuds avec mode.
  2. Dans une deuxième version, vous simulerez les appels de règles par noeuds avec mode en transmettant un paramètre à la règle (même syntaxe que pour les appels par nom).