XML -- TP 4 : XSLT
Méthodologie
Pour appliquer une feuille de style XSLT à un document XML,
plusieurs techniques sont envisageables en fonction de l'application :
Exercice 1: Le groupe de travail
Les fichiers suivants sont des exemples de feuilles de style,
accompagnés des documents XML correspondant. Les feuilles de style
wg.xsl et wg2.xsl montrent deux façons différentes
de produire un même affichage.
Fichiers: - wg_court.xml - wg_court.xsl
- wg.xml - wg.xsl - wg2.xsl
Voici les fichiers d'exemple vus en cours. Ils permettent un
affichage HTML du document XML du groupe de travail. Dans la
suite, nous allons étendre la feuille de style wg.xsl
pour améliorer l'affichage.
- Question 1 :
Ajoutez les informations concernant l'horaire et la
salle.
- Question 2 :
Rajoutez un test permettant un affichage différent pour
les jours où il n'y a pas de groupe de travail, et un autre pour
le cas où l'élément gdt n'a aucun
fils expose.
- Question 3 :
Utilisez la balise text pour insérer les espaces
manquants. Pour cela, vous définirez une variable xsl représentant
un espace pour clarifier votre feuille de style.
- Question 4 :
Définissez une template translate prenant en
entrée la valeur de l'attribut month (le nom du mois an
anglais), et retournant le nom de ce mois en français. Modifiez
votre feuille de style pour faire appel à ce template.
Exercice 2: Recettes de cuisine
Fichiers: - egg.xml
- tiramisu.xml
- liste.xml
- egg.html
Dans cet exercice on travaille avec des documents XML pour
des "recettes de cuisine", comme par exemple egg.xml et
tiramisu.xml.
-
Question 1 :
Écrivez une feuille de style XSLT pour afficher une
version HTML de ces fichiers semblable à la
page egg.html dans le cas du
fichier egg.xml. Pour tenir compte des références vers
les ingrédients, vous pourrez utiliser la balise html a,
avec l'attribut name à l'endroit qui doit être référencé,
et l'attribut href pour créer la référence. Enfin, il est
conseillé de définir des templates pour chaque élément du document
XML afin de clarifier la feuille de style. Notez
que cuisson et repos peuvent apparaître à deux
endroits, et ne doivent pas être traités de la même façon. Vous
pouvez pour les distinguer utiliser un mode, ou des modèles de
sélection XPath distincts.
-
Question 2 :
On souhaite à présent afficher dans un seul document les
différentes recettes. Pour cela, on s'intéresse au
document liste.xml qui recense tous les documents xml
correspondant à des recettes. Écrivez une nouvelle feuille
de style XSLT qui, associée à ce document, permet d'afficher
l'ensemble des recettes. On utilisera l'opérateur
XPath document(url) qui permet de parcourir le document
XML désigné par l'adresse url.
Indication : On pourra utiliser la structure suivante qui
permet d'appliquer les règles (templates) définies dans le document
aux éléments recette des documents référencés
dans liste.xml :
<xsl:for-each select="recettes/entry">
<xsl:apply-templates select="document(@file)/recette"/>
</xsl:for-each>
-
Question 3 :
On souhaite à présent numéroter les recettes. Utilisez
pour cela la balise de
numérotation xsl:number count="...". Vous la
combinerez avec les éléments param
et with-param. Notez que l'on peut passer un paramètre
lors de l'utilisation de
l'appel apply-templates.
-
Question 4 :
Les identifiants des ingrédients sont en conflit
entre les différents documents. En utilisant la numérotation des
recettes, modifiez les identifiants en les préfixant du numéro de
la recette afin d'éviter tout conflit.