TP : Les feuilles de style XSL

Documents XML et DTD

A l'issue du TP précédent vous devez disposer d'un document XML qui regroupe :

Feuilles de style XSL

Objectifs : A partir du document XML (séance précédente) qui décrit les unités d'enseignement, les intervenants, les semestres et les parcours du M1, nous allons maintenant produire une page XHTML puis, plus tard, une série de pages.

Première transformation

Construisez une feuille de style XSL permettant de produire une page XHTML qui liste les UE et les informations dont nous disposons (utilisez la commande xsltproc). Faites en sorte que la page produite soit valide vis à vis de la norme du W3C (utilisez tidy).

Lister les données

♦ Étape 1 : ajoutez à votre feuille une règle nommée pour produire la liste des intervenants avec toutes les informations disponibles.

♦ Étape 2 : Faites en sorte que chaque intervenant ait un identifiant dans le fichier XML (attribut id de type ID). Utilisez cet identifiant et l'attribut id du XHTML (sur l'élément de votre choix) pour que des ancres soient définies dans votre fichier XHTML. L'URL ci-dessous doit pouvoir vous amener directement à la description de l'enseignant en question :

votre-page.html#identifiant-enseignant

♦ Étape 3 : Dans une nouvelle règle nommée, utilisez le principe des ancres pour construire, au début de votre fichier XHTML, une liste des intervenants (avec <ul><li>..</li>..</ul>). Dans chaque élément de cette liste vous placerez un lien permettant un accès direct à la fiche d'un intervenant :

<li><a href="#identifiant-de-xyz">XYZ</a></li>

♦ Étape 4 : Faites la même chose pour les unités d'enseignement.

Lier les données

♦ Étape 1 : Modifiez l'affichage des unités d'enseignement afin que chaque UE soit accompagnée de la liste de ses intervenants. Chaque intervenant sera présenté sous la forme d'un lien direct vers sa fiche. Conseil : pour chaque entité susceptible d'être la cible d'un lien, je vous conseille de mettre en place deux règles :

<xsl:template match="intervenant">
   ... produire la fiche d'un intervenant ...
</xsl:template>

<xsl:template match="intervenant" mode="ref">
   ... produire un lien vers la fiche d'un intervenant ...
</xsl:template>

♦ Étape 2 : Appliquez le même principe afin que chaque intervenant soit accompagné de la liste des unités d'enseignement dans lesquelles il intervient. Conseil : Utilisez une variable XSL associée à une expression XPATH qui va, pour chaque intervenant, extraire les UE utiles.

Important : A la fin de la séance, envoyez-moi la feuille de style sur laquelle vous avez travaillé avec la commande :

/home/massat/public/envoyer-tps-xml noms-des-fichiers-a-envoyer

Sorties multiples

♦ Étape 1 : Consultez la documentation sur XSLT 1.1 pour conprendre le fonctionnement de l'élément <xsl:document>.

♦ Étape 2 : Modifiez votre feuille de style et utilisez cette directive pour produire trois fichiers XHTML :

Attention : Les liens entre UE et intervenants doivent toujours fonctionner.

♦ Étape 3 : En utilisant l'élément <xsl:for-each ..> de XSL, faites en sorte de produire autant de fichiers que d'unités d'enseignement.

♦ Étape 4 : Même principe pour les intervants.

Traiter les parcours et les semestres

Ajoutez à votre feuille XSL la production d'une page XHTML par parcours. Ces pages doivent présenter le parcours, les semestres et mettre en place les liens entre semestres et unités d'enseignement.

Conseil : N'hésitez pas à construire une nouvelle feuille que vous allez ensuite inclure dans la feuille principale (clause <xsl:include ...>).