Copyright © 2010-2023 Yves MARCOUX; dernière modification de cette page: 2023-03-12.
Yves MARCOUX - EBSI - Université de Montréal
Le but de cet exercice est de vous préparer au stylage de vos documents dans le cadre du projet de modélisation et stylage. Les exemples des deux séries de 240-Ex-XSLT-pas-a-pas sont un prérequis. Vous devriez également avoir complété les Exercices XSLT de base.
Vous devez rédiger une feuille de style XSLT qui transforme en HTML des documents XML selon un certain style, lequel vous est présenté par une série d’exemples. Chaque exemple consiste en une paire de fichiers :
ex-xslt.nn.xml
ex-xslt.nn.html
où nn
est le numéro de l’exemple.
Chaque exemple illustre comment un document XML spécifique doit être formaté par la
feuille de styles demandée. Ainsi, par exemple, le fichier
ex-xslt.6.html
est le résultat qui doit être produit par la feuille
de styles lorsqu’on l’applique au document XML ex-xslt.6.xml
.
Cinq exemples sont fournis, numérotés de
6
à 10
:
Document XML intrant | Extrant HTML qui doit être produit |
---|---|
ex-xslt.6.xml |
ex-xslt.6.html |
ex-xslt.7.xml |
ex-xslt.7.html |
ex-xslt.8.xml |
ex-xslt.8.html |
ex-xslt.9.xml |
ex-xslt.9.html |
ex-xslt.10.xml |
ex-xslt.10.html |
Faites Affichage → Source dans votre navigateur pour voir la source (le code) des fichiers HTML.
Vous devez produire une unique feuille de styles, appelons-la
ex-xslt.xsl
, telle que si on l’applique à ex-xslt.6.xml
,
le résultat HTML obtenu est ex-xslt.6.html
; si on l’applique à
ex-xslt.7.xml
, le résultat HTML obtenu est
ex-xslt.7.html
; etc.
N.B. : La même préparation de votre navigateur Web que pour les Exercices XSLT de base est requise. Assurez-vous de l’avoir déjà faite.
Vous devez rapatrier sur votre poste de travail les fichiers exemples, ainsi que la
DTD (fichier ex-xslt.dtd
), dans un même
dossier. L’ensemble des fichiers est disponible dans un fichier compressé unique. Avant de le décompresser, assurez-vous que le
fichier n’est pas « bloqué » par Windows (Comment
vérifier?).
Vous verrez que chaque document XML contient un lien vers une feuille de style
appelée ex-xslt.xsl
:
<?xml-stylesheet type="text/xsl" href="ex-xslt.xsl" ?>
Cette feuille, également incluse dans le fichier compressé, ne contient au départ aucun gabarit :
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <!-- C'est ici que vous insérerez vos gabarits --> </xsl:stylesheet>
Durant l’élaboration de votre feuille de style, vous pouvez en tout temps contrôler l’extrant produit à partir d’un des documents en lançant dans oXygen une transformation du document :
xml-stylesheet
du document.Si la transformation s’effectue sans erreur, l’extrant HTML produit par votre
feuille XSLT est créé dans le même dossier (même nom de fichier, avec l’extension
.html
) et il est tout de suite ouvert en navigateur web.
Notez que le défi n’est absolument pas de trouver comment réaliser en HTML le formatage voulu, puisque le code HTML des extrants vous est donné explicitement. Le défi consiste à exprimer en XSLT une transformation qui permette d’obtenir le code HTML d’un exemple à partir du document XML correspondant, et ce pour chacun des exemples fournis. Essayez de développer une feuille XSLT qui produise, pour chaque exemple, un extrant HTML le plus proche possible du HTML fourni dans les exemples HTML.
La liste qui suit n’est pas une description exhaustive du stylage que votre feuille XSLT doit effectuer, mais souligne quelques points particuliers:
ex-xslt.dtd
. Votre feuille de styles peut présupposer que
tous les documents qu’on lui présentera seront valides selon cette DTD. En
particulier, vous pouvez vous fier sur le fait que les éléments apparaîtront
toujours dans le même ordre.titre
) se retrouve à deux endroits
dans le HTML produit: dans le sous-élément title
de l’élément
head
et dans l’entête h1
de l’élément
body
.anpub
(année de publication). Si cet
élément est présent, alors le titre dans l’élément h1
est suivi d’une
indication de l’année de publication (anpub
).lisibilité
et accès
sont présentés chacun
dans une ligne d’un tableau HTML, lequel mesure donc deux lignes par une colonne.
Le contenu de ces éléments, qui peut être l’élément vide général
ou
l’élément vide restreint
, est « traduit » en une périphrase
appropriée qui varie selon que le parent est lisibilité
ou
accès
.type
de l’élément notice
et l’attribut
degré
de l’élément em
sont présents dans les
documents, mais ignorés au stylage. Votre feuille XSLT n’a donc pas à se
préoccuper de ces attributs. Il s’agit là d’une situation tout à fait légitime en
documents structurés et non d’une erreur dans l’exercice demandé.em
, qui signifie emphase et dont le contenu doit être formaté avec
l’élément HTML em
. Notez que la DTD ne permet pas l’imbrication
d’éléments em
l’un dans l’autre; vous n’avez donc pas à prévoir ce
cas. Elle permet un attribut degré
, mais celui-ci doit être ignoré
par la feuille XSLT.type
possédant la valeur
pers-mora
pour un élément auteur
doit déclencher deux
choses: (1) l’insertion d’un astérisque en exposant* après le nom de
l’auteur et (2) l’insertion, après la liste des auteurs, de la « légende » de
l’astérisque, à savoir le passage suivant: Ce passage ne doit être inséré que si un auteur ou plus avait un attribut* : personne morale
type
avec valeur pers-mora
. N’essayez
pas de déclencher les deux insertions dans le même gabarit. La première insertion
devrait être effectuée dans le gabarit pour l’élément auteur
et la
seconde dans celui pour l’élément auteurs
.