Exercices en XSLT

Le retour de la bolo...

Créez une feuille de transformation qui transforme la recette de spaghetti en un document html (XHTML) qui contient simplement le texte Ceci est une recette de cuisine. Associez votre document xml à cette feuille de transformation et visualisez-le résultat avec Firefox.
Créez une vraie feuille de transformation pour obtenir un document Xhtml à partir de la recette.

Les observations ornithologiques

Créez une vraie feuille de transformation pour obtenir un document Xhtml à partir du document oiseaux.xml. Les photos doivent apparaître, bien sûr, et la page HTML doit être associée à une css.

Au final, le document html devra comporter un menu en haut qui permettra d'accéder directement à une fiche :

Chacun des items étant un lien vers une ancre dans le document.

Le livre de comptes

Cet exercice est aménagé à partir d'un exemple du livre Introduction à XML de Erick Ray, ed. O'Reilly. Récupérez le livre de comptes. L'objectif est de réaliser une page HTML qui pré ce document.
Présentez chacune des opérations de base. Dans un premier temps, vous n'écrirez pas de feuille de style mais vos préparerez le terrain pour que cela soit possible.
Tout d'abord, quelques expressions XPath :
Ecrire la règle qui présente le livre de comptes en commençant par
Opération du ... au ...
Solde : ...
Le solde sera affiché en rouge si le montant est négatif, en bleu sinon. Cette information doit se trouver au début du document.
Ecrire la règle qui termine le document en présentant la somme des dépenses et la somme des recettes.
Comment séparer la présentation d'un retrait au distributeur d'un autre retrait quelconque? Implémentez votre solution.
Présentez maintenant les retraits dans l'ordre décroissant de leur montant.

La tarte à la ricotta... c'est pas bon, hein?

Hé bien, tant pis pour vous, elle revient.

Écrivez les règles de transformations qui permettent de retourner, à partir de la recette de la tarte à la ricotta et autres recettes danoises une estimation de la quantité d'ingrédients (en poids) pour chaque plat. Pour simplifier, on prendra arbitrairement :

On veut l'information sous la forme :

<plats>
  <plat>
    Ricotta Pie - poids estimé : 2555,77 gr.
  </plat>
  ...
</plats>
    

On veut maintenant que les recettes soient présentées selon leur apport calorique. Donnez les titres des recettes à l'intérieur d'une des trois catégories : plats inférieurs à 500 calories; plats de 500 à 1000 calories; plats supérieurs à 1000 calories. On veut l'information sous la forme :

<plats>
 <categorie minCalories="0" maxCalories="500">
  <recette>Ricotta Pie</recette>
 </categorie>
 <categorie minCalories="500" maxCalories="1000">
  <recette>Linguine Pescadoro</recette>
  <recette>Zuppa Inglese</recette>
 </categorie>
 <categorie minCalories="1000" maxCalories="unbounded">
  <recette>Cailles en Sarcophages</recette>
 </categorie>
</plats>

Utiliser eXSLT (extensions to XSLT)

Plusieurs communautés travaillent à proposer des extensions à XSLT. Allez regarder le site www.exslt.org. Les fonctions proposées sont implémentées dans xsltproc. Vous n'aurez qu'à ajouter un espace de nom et une extension de préfixe à votre feuille de style. Cela donnera :

<xsl:stylesheet  version="1.0"     
		 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
		 xmlns:math="http://exslt.org/math"
                 extension-element-prefixes="math">
    
pour l'utilisation des fonctions mathématiques par exemple.

Ecrivez la règle de transformation qui retourne le montant du plus gros retrait sur le compte ainsi que le montant le plus petit.

Utiliser des paramètres

Vérifiez que vous savez bien écrire la fonction factorielle en XSLT...
Ecrivez un document XML qui comporte une liste de personnes. Ecrivez la feuille de style XSLT qui produit un document XHTML dans lequel les noms et prénoms des personnes apparaissent dans un tableau à deux colonnes (i.e. la moitié des personnes dans la colonne de gauche, l'autre moitié dans la colonne de droite).
Implémentez une solution pour que le nombre de colonnes soit paramétrable.
On veut maintenant ajouter à la page XHTML des fiches d'observations ornithologiques (du premier exercice), en début de page, un tableau récapitulatif qui indique pour chaque espèce dans quelles fiches elle a été observée (avec là aussi un lien vers la fiche). Ce qui identifie une espèce, c'est son nom, aussi vous devrez faire attention à ne proposer dans le tableau qu'une ligne par espèce, i.e. ne pas dupliquer les lignes.

Travailler avec la numérotation

On travaille à partir du fichier Grand prix.

Ecrivez une feuille de style qui produit un document XHTML mettant légèrement en forme ce document. Notamment, les producteurs, les scénaristes, etc... seront présentés dans des sections bien déterminées.
Insérez au début de votre document une table des matières numérotée avec des ancres pointant vers les sections décrivant les scénaristes, les producteurs, ...

Le Lens-Jazz-Festival

Vous devez maintenant proposer des feuilles de transformations pour vos documents du LJF :

Vous devez rendre ces feuilles de transformations (avec le README qui conviendra) pour le jeudi 20 novembre.