TP 4: XSL / XSLT

W3C: World Wide Web ConsortiumXML: eXtended Markup Language


1. Xalan, un processeur XSLT

Le projet Xalan (http://xalan.apache.org/) est maintenu par la fondation Apache et est disponible pour les environnements Java et C++.
Xalan est un processeur XSLT pouvant être utilisé aussi bien en ligne de commande qu’en API embarqué dans une application.
Nous nous intéresserons durant ce travail à la version Java de Xalan, disponible à l'adresse : http://xalan.apache.org/xalan-j/index.html.

La mise en place de Xalan est la suivante :
  1. télécharger l’archive contenant la distribution de Xalan à l’adresse http://apache.mindstudios.com/xalan/xalan-j/binaries/xalan-j_2_7_2-bin.zip. Si cette adresse ne fonctionne pas, essayez d’utiliser un autre miroir de téléchargement depuis la page http://www.apache.org/dyn/closer.cgi/xalan/xalan-j;
  2. décompresser l’archive xalan-j_2_7_2-bin.zip dans un répertoire approprié ;
  3. rendez-vous dans le répertoire où Xalan a été décompressé (par défaut ce répertoire se nomme xalan-j_2_7_2) et créer un fichier de commande afin de pouvoir le lancer :
    • sous windows, créer le fichier "xalan.bat" ayant pour contenu :
      @echo off
      @java -cp serializer.jar;xercesImpl.jar;xml-apis.jar;xalan.jar org.apache.xalan.xslt.Process %*
    • sous linux, créer le fichier "xalan" ayant pour contenu :java -cp serializer.jar:xercesImpl.jar:xml-apis.jar:xalan.jar org.apache.xalan.xslt.Process $*
      Attention, penser à rendre le fichier xalan exécutable (chmod u+x xalan).
Vous pouvez si vous le souhaitez intégrer le répertoire d’installation de Xalan au PATH de votre système si vous souhaitez pouvoir le lancer de n’importe quel emplacement.
Nous allons maintenant tester le bon fonctionnement de Xalan. Pour cela, rester dans le répertoire d’installation de Xalan (là ou les fichiers de commandes ont été crées) et taper :
  • sous windows : xalan.bat -in samples/SimpleTransform/birds.xml -xsl samples/SimpleTransform/birds.xsl
  • sous linux : ./xalan -in samples/SimpleTransform/birds.xml -xsl samples/SimpleTransform/birds.xsl Dans les 2 cas, la console doit afficher un document structuré.
Maintenant que Xalan est fonctionnel, nous allons traiter nos premier fichiers XSLT.

2. XML vers XML

Le travail de transformation va se baser sur une version harmonisée du document XML de gestion de bibliothèque books-extended.xml ainsi que sa DTD books.dtd.
Votre travail consiste à créer une feuille XSLT répondant aux exigences suivantes :
  1. le document résultat contient un élément racine Result qui contient trois éléments Bloc ;
  2. le premier élément Bloc contient la liste des catégories et leurs descriptions.
  3. le second élément Bloc contient les informations qui décrivent les "top author" de la semaine.
    Un "top author" est un auteur dont la description XML (élément Author) contient un attribut "top" dont la valeur est "true".
    Pour chaque "top author" :
    • ajouter à l’élément Bloc un élément TopAuthor et ajouter à celui-ci un attribut name qui contient le nom de l’auteur.
    • ajouter à l’élément TopAuthor un élément Books contenant lui même un élément Title pour chacun des livres du "top author" ;
    • ajouter un attribut averageBookPrice à l’élément Books dont la valeur est le prix moyen des livres de l’auteur ;
    • ajouter un attribut nbLivres à l’élément Books dont la valeur est le nombre des livres du "top author" ;
    • ajouter à l’élément TopAuthor un élément LastBook qui contient le texte du titre du dernier livre de cet auteur dans le document source ;
    • ajouter à l’élément LastBook un attribut price dont la valeur est le prix de ce dernier livre ;
    • créer un élément Domain, fils de l’élément TopAuthor qui liste les catégories des livres de cet auteur ;
  4. le troisième élément Bloc contient la liste complètes des livres triée par premier auteur et par catégorie dans des éléments de la forme :
    <Book category="...">
     <FirstAuthor> ... </FirstAuthor>
     <Title>...</Title>
    </Book>​

3. XML vers XHTML avec CSS

Nous allons maintenant utiliser XSLT afin de générer un document XHTML depuis notre document source XML.

Vous trouverez la spécification XHTML émise par le W3C à l’adresse http://www.w3.org/TR/html/. Le travail demandé se divise en deux phases :

  1. écrire une feuille XSLT qui génèrer un fichier XHTML depuis le fichier XML source.

    Attention, le document XHTML ne doit contenir que des informations liées à la structure logique du document et aucune instruction de présentation ;

  2. écrire une feuille de Style CSS afin de mettre en forme le document XHTML généré. Vous trouverez la spécification de CSS et quelques exemples sur le site du W3C : http://www.w3.org/TR/CSS/.

Le but de ce travail n’étant pas la maitrise du CSS, vous vous contenterez d’une présentations minimale.

4. XSL/FO

La présentation du document source peut être réalisée en utilisant le langage XSL/FO à la place de XHTML+CSS. Le langage XSL-FO est décrit à l’adresse http://www.w3.org/TR/xsl/#fo-section. L’utilisation d’une feuille XSL-FO permet de générer directement un PDF depuis le document source XML. Pour cela il faut utiliser le logiciel FOP de la fondation apache (http://xmlgraphics.apache.org/fop/). Un tutoriel sur l’utilisation de XSL-FO est disponible à l’adresse suivante : http://w3schools.sinsixx.com/xslfo/default.asp.htm. Ce tutoriel vous donnera les templates et les outils nécessaires à la suite de ce TP.

4.1. Mise en place de FOP

Nous allons maintenant mettre en place l’environnement FOP :
  1. télécharger la dernière distribution de Apache FOP depuis le lien : http://apache.mindstudios.com/xmlgraphics/fop/binaries/fop-2.2-bin.zip. Si le lien ne fonctionne pas, utiliser un autre miroir (http://www.apache.org/dyn/closer.cgi/xmlgraphics/fop) ;
  2. décompresser l’archive récupérée dans le répertoire approprié (par exemple le même que celui ou Xalan a été décompressé) ;
  3. rendez vous dans le répertoire ou fop est décompressé :
    • Sous windows, lancer la commande fop.bat depuis la ligne de commande et vérifier son retour (la page d’aide doit s’afficher).
    • Sous linux, lancer la commande fop et vérifier son retour (la page d’aide doit s’afficher).
L’environnement Apache FOP est maintenant fonctionnel. Comme pour Xalan, vous pouvez l’intégrer au PATH du système pour pouvoir lancer les commandes fop depuis n’importe où.

4.2. XML vers PDF

Ecrire une feuille. XSL-FO qui transforme le document XML créé en section 2 en fichier PDF.