Chapitre 6 : Langage de transformation XSLT

8. Exercices

Plan de la section

  1. Exercice 5.1 (Formation)
  2. Exercice 5.2 (Classe)
  3. Exercice 5.3 (Chimie)

Pour tous les exercices il faut disposer d'un outil qui implémente un processeur XSLT version 1.0. Une solution simple consiste à ouvrir dans un navigateur le fichier XSLT muni de l'instruction qui lui attache le programme XSLT. Mais, si on veut avoir accès au code produit, il faut utiliser soit un outil en ligne, soit un logiciel dont on peut paramétrer les fichiers de sortie.

Exercice 5.1 (Formation)

Cet exercice se propose de transformer des documents XML qui décrivent la répartition en modules de contenus de formation.

1) Télécharger la DTD formation.dtd (description de documents qui présentent une formation) et le document XML cci.xml (document qui décrit une formation particulière nommé cci).

2) Écrire un programme XSLT formation_lst_a.xsl qui transforme le document cci.xml en une page HTML constituée de listes imbriquées, dont l'interprétation par un navigateur donne la présentation suivante : cci.xml.

Code html (clic droit dans la fenêtre) → Aide

3) Transformer le document cci.xml en un document cci_a.htm en utilisant le processeur XSLT de Linux xsltproc -o cci_a.htm formation_lst_a.xsl cci.xml ou un autre outil de transformation.

4) Écrire une deuxième version du programme XSLT formation_lst_b.xsl pour que le mot Programme n'apparaisse que si le module est effectivement accompagné d'un texte décrivant le programme (voir).

Code html (clic droit dans la fenêtre) → Aide

5) Produire un deuxième document cci_b.htm à partir de cette deuxième version du programme.

6) Écrire un programme XSLT formation_tab.xsl qui transforme le document cci.xml en une page HTML cci_tab.xml constituée d'un tableau qui récapitule les modules.

Code html (clic droit dans la fenêtre) → Aide

7) Produire un troisième document cci_tab.htm à partir de ce dernier programme.

Exercice 5.2 (Classe)

Cet exercice reprend le document de la classe à 5 élèves qui a été utilisé dans les exemples commentés du cours. Il se propose de générer des tableaux de notes individuels et un tableau récapitulatif des moyennes des élèves.

1) Télécharger la dtd classe.dtd (description d'une classe) et le document classe_g2.xml (document qui décrit une classe de 5 élèves).

2) Écrire un programme XSLT qui transforme le document classe_g2.xml en une page HTML dont l'interprétation par un navigateur répond au descriptif suivant (voir) :

3) Tester

4) Écrire une autre version dans laquelle les moyennes sont calculées sur le nombre effectif de notes (on suppose qu'il y a au moins une note) (voir) Aide.

5) Écrire un troisième programme XSLT qui génère un tableau HTML qui, pour chacune des cinq matières affiche le nombre total de notes, tous élèves confondus, la somme de ces notes ainsi que leur moyenne (voir). L'en-tête du tableau :

MatièresNombreSommeMoyenne
............

Exercice 5.3 (Chimie)

Avertissement : pour faire cet exercice il n'est pas nécessaire d'avoir des connaissances en chimie, il suffit de connaître le vocabulaire suivant :

1) Écrire un programme XSTL qui s'applique à un document comme chimie_01.xml, décrit par la DTD chimie.dtd, et génère une page HTML composée de deux parties : (voir)

Remarques importantes :

Tester le programme XSLT en réalisant la transformation. On rappelle que les pages HTML correspondant aux éléments n'ont pas à être produites. En conséquence il est normal que le fait d'activer un lien vers un élément atomique à partir de la page résultat génère une erreur (ce n'est pas le cas dans cet énoncé car les pages des éléments ont été générées pour la question suivante).

2) Écrire une deuxième version du programme qui produira effectivement les pages HTML relative à chaque élément atomique entrant dans la composition d'un corps (et seulement ceux-là). Dans ces pages il y aura simplement les informations liées à chaque élément, comme par exemple pour le carbone. Attention pour tester cette deuxième version, il faut utiliser la version 2.0 de XSLT et les outils associés.

3) Écrire une règle XSLT qui prend un élément atome quelconque défini par la DTD chimie.dtd comme par exemple :

  
<atome symbole="Na" Z="11">
  <nom>sodium</nom>
  <couche>3</couche>
  <periph>1</periph>
  <masse>23</masse>
  <type>métal alcalin</type>
</atome>

et génère un élément un_atome vérifiant le fragment de DTD :

<!ELEMENT un_atome (nom, symbole, numero, masse, type?)>>
<!ATTLIST un_atome couche CDATA #REQUIRED
                   periph CDATA #REQUIRED>

comme par exemple :

<un_atome couche="3" periph="1">
  <nom>sodium</nom>
  <symbole>Na</symbole>
  <numero>11</numero>     
  <masse>23</masse>
  <type>métal alcalin</type>
</un_atome>

On ne demande pas de feuille XSLT complète, mais seulement la règle :

<xsl:template match="atome">
  <!-- à compléter -->
</xsl:template> 

Pour tester cette règle, il faut l'intégrer à un programme XSLT qui génère un document dont la racine peut s'appeler <liste_des_atomes> et contient simplement la liste des éléments <un_atome> générés par la règle demandée ci-dessus.