XML -- TP 4 : XSLT -- Correction
Exercice 1: Le groupe de travail
Fichiers: - wg_court.xml - wg_court.xsl
- wg.xml - wg.xsl - wg2.xsl
Une feuille de style XSL permettant de répondre aux 4
questions de cet exercice est disponible ici :
wg_final.xsl
Remarque : le
fichier wg.xml téléchargeable ci-dessus fait référence à
cette feuille de style.
- 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
Une feuille de style permettant de répondre à la première
question est disponible ici : recette.xsl.
Une feuille de style permettant de répondre aux trois questions
suivantes est disponible ici : liste.xsl.
-
Question 1 :
Écrivez une feuille de style XSLT pour afficher une
version HTML de ces fichiers. 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.
-
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.