Copyright © 2012-2023 Yves MARCOUX; dernière modification de cette page: 2023-02-07.
Yves MARCOUX – EBSI – Université de Montréal
Notes : Les exemples des deux séries de 240-Ex-XSLT-pas-a-pas sont un prérequis. Les réponses aux exercices sont données à titre d’exemples et ne sont jamais qu’une des solutions possibles.
N.B. : Si vous travaillez aux Laboratoires de l’EBSI (en virtuel ou présentiel) avec le navigateur Firefox, vous n’avez rien à faire pour cette section.
Ces exercices prévoient l’exécution par un navigateur Web d’une feuille de style XSLT locale sur un fichier XML. Pour des raisons de sécurité, les navigateurs requièrent pour cela une configuration particulière, qui varie selon le navigateur. Faute de procéder à cette configuration, les navigateurs affichent habituellement une fenêtre entièrement vide (ou blanche) si on essaie d’ouvrir un fichier XML lié à une feuille XSLT locale.
about:config
dans la barre
d’adresse. Confirmez toute mise en garde qui pourrait s’afficher.security.fileuri.strict_origin_policy
.false
, vous n’avez rien à faire. Si la
valeur est true
, continuez avec les étapes ci-dessous.Inverser
; cela réglera la valeur de l’option à
false
.Cette option est persistante d’un lancement à l’autre du navigateur. Normalement, vous n’aurez donc pas à refaire l’opération.
Cette option est persistante d’un lancement à l’autre du navigateur. Normalement, vous n’aurez donc pas à refaire l’opération.
N.B. : Si vous êtes sur Mac ou Linux, il est déconseillé d’utiliser Chrome ou Edge pour ces exercices. Il est recommandé d’utiliser plutôt Safari sur Mac ou Firefox sur Linux. Les instructions ci-dessous ne s’appliquent qu’à Windows.
Chrome et Edge doivent être démarrés avec un raccourci spécial, qui active une option les autorisant à appliquer une feuille XSLT locale à un fichier XML.
Enregistrez d’abord ce fichier compressé
à l’endroit de votre choix sur votre ordinateur. Assurez-vous qu’il ne soit pas
« bloqué » par Windows (comment vérifier ?), puis décompressez-le; cela créera un dossier
raccourcis-speciaux
contenant les trois raccourcis suivants :
Chrome-local
(à utiliser si vous avez Chrome version 64
bits)Chrome(x86)-local
(à utiliser si vous avez Chrome version 32
bits)Edge-local
(à utiliser avec Edge)Pour Edge seulement :
Ce réglage est persistant d’un lancement à l’autre de Edge. Normalement, vous n’aurez donc pas à refaire l’opération.
Fermez toutes les fenêtres du navigateur qui seraient déjà ouvertes, puis relancez-le en double-cliquant sur le raccourci spécial approprié. Laissez-le ouvert jusqu’à ce que vous ayez terminé votre session de travail.
Tant que vous ne fermez pas la dernière fenêtre du navigateur, il sera possible d’ouvrir un fichier XML lié à une feuille XSLT locale. Si vous fermez de nouveau toutes les fenêtres du navigateur, et que vous redémarrez le navigateur de la façon habituelle (et non avec le raccourci spécial), le navigateur reprendra son comportement normal, et affichera donc une fenêtre entièrement vide lorsqu’on essaie d’ouvrir un fichier XML lié à une feuille XSLT locale. Pour à nouveau pouvoir travailler avec une feuille XSLT locale, redémarrez simplement le navigateur avec le raccourci spécial.
Pour vérifier que votre navigateur est configuré correctement pour l’application de feuilles XSLT locales, récupérez ce fichier compressé (assurez-vous qu’il n’est pas « bloqué » par Windows; comment vérifier ?) et décompressez-le à l’emplacement de votre choix sur votre poste de travail. Si le navigateur à vérifier est Edge ou Chrome, fermez toutes les fenêtres du navigateur qui seraient déjà ouvertes, puis lancez-le en double-cliquant sur le raccourci ad hoc récupéré ou créé précédemment et laissez le ouvert.
Ouvrez ensuite dans votre navigateur le fichier XML
test-XSLT-local\XML\test-doc.xml
tout juste décompressé. Si la
configuration est correcte, vous obtiendrez le rendu suivant :
Si ça ne marche pas
Avec Chrome et Edge, essayez de créer vous-même un raccourci spécial de cette façon :
modStyl\travail
.Il doit y avoir une espace avant les deux tirets
--allow-file-access-from-files
--
. La
cible au complet ressemblera à ceci :
"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" --allow-file-access-from-files
Un double-clic sur ce raccourci (après avoir fermé toutes les fenêtres du navigateur) lancera le navigateur avec l’option spéciale l’autorisant à appliquer une feuille XSLT à un fichier local activée.
Pour Edge : Assurez-vous d’avoir bien fait l’étape 2 de la section 1.1.3 ci-dessus. Refaites-la s’il y a un doute.
Chacun de ces exercices fait intervenir un document XML bien-formé (donné au début de chaque section) et une feuille de style XSLT partielle (aussi donnée au début de chaque section), qu’il s’agit de compléter de façon à obtenir un certain extrant HTML (dont l’affichage souhaité en navigateur est donné dans la question). Le plus simple est de placer tous les fichiers en jeu dans le même dossier sur votre poste de travail.
Voici la méthode recommandée pour pouvoir contrôler facilement l’allure de l’extrant produit par une feuille XSLT que vous êtes en train de compléter :
feuille.xsl
.
Laissez oXygen et l’onglet de la feuille de style ouverts.Après cette mise en place, chaque fois que vous voudrez contrôler l’extrant, vous n’avez qu’à sauvegarder la feuille XSLT dans oXygen, puis passer à la fenêtre du navigateur et rafraîchir l’affichage (F5 ou bouton approprié de la barre d’outils).
Avec le document XML bien-formé suivant :
<?xml-stylesheet type="text/xsl" href="feuille.xsl" ?> <notice type="article"> <accès><général/></accès> <lisibilité><restreint/></lisibilité> <auteurs> <auteur>Julia Royer</auteur> <auteur>Claude Rouleau</auteur> </auteurs> <titre>Le printemps</titre> </notice>
et à partir de la feuille de style XSLT suivante, que vous nommerez
« feuille.xsl
» et placerez dans le même dossier que le
document XML :
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <title><xsl:value-of select="notice/titre" /></title> </head> <body> <h1><xsl:value-of select="notice/titre" /></h1> <hr/> </body> </html> </xsl:template> </xsl:stylesheet>
complétez la feuille de style pour obtenir successivement chacun des résultats
suivants (pensez à utiliser les fonctions XPath, si nécessaire, notamment
count(...)
et last()
) :
Changeons maintenant de document et travaillons avec celui-ci :
<?xml-stylesheet type="text/xsl" href="feuille.xsl" ?> <notice type="bibtex"> <accès><général/></accès> <lisibilité><restreint/></lisibilité> <auteurs> <auteur type="pers-phys">Julia Royer</auteur> <auteur type="pers-mora">Corporation General Motors</auteur> </auteurs> <cote valeur="123.456" /> <titre>Le printemps</titre> <résumé> <par>Les auteurs parlent de leur saison préférée.</par> <par>Les <em degré="1">12 premiers</em> chapitres parlent de botanique.</par> </résumé> </notice>
Toujours avec la même feuille XSLT comme point de départ :
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <html> <head> <title><xsl:value-of select="notice/titre" /></title> </head> <body> <h1><xsl:value-of select="notice/titre" /></h1> <hr/> </body> </html> </xsl:template> </xsl:stylesheet>
modifiez-la pour obtenir successivement les résultats suivants :