<texit info> author=E. Bruno title=XML TP3 </texit>
L’objectif de ce TP est d’utiliser le langage XSLT pour (1) transformer la structure d’un ensemble de documents XML vers un format pivot, (2) puis de transformer ce format “pivot” vers un ou plusieurs formats applicatifs (XHTML dans un premier temps).
Outils utilisés pour l’application de feuilles XSLT:
La commande pour appliquer une feuille de style est :
java -cp saxon9he.jar net.sf.saxon.Transform -strip:all -s:sourceDocument.xml -xsl:stylesheet.xsl -o:outputDocument.xml
Un squelette de feuille XSLT est fourni dans le fichier squel.xsl, le compléter pour que l’application de cette feuille de style
au document books.xml
des TP précédents créée un document qui réponde aux exigences suivantes :
Result
qui contient trois éléments Bloc
.C
dont la description est secrète, on affichera alors “catégorie secrète”.topAuthor
Books
contenant un élément Title
pour chacun de ses livres.nbLivres
à l’élément Books
dont la valeur est le nombre de ses livres.LastBook
qui contient le texte du titre du dernier livre de cet auteur dans le document source.price
dont la valeur est le prix de ce livre.Domain
qui la liste des catégories des livres de cet auteur.averageBookPrice
dont la valeur est le prix moyen de ses livres.Bloc
contient la liste complètes des livres triées par premier auteur et par catégorie dans des éléments
de la forme <Book category='…’><FirstAuthor>…</FirstAuthor><Title></Title></Book>
Avez-vous pensé à utiliser les modes ?
Ecrire une feuille XSLT qui transforme le document XML obtenu dans l’exercice précédent en un document XHTML.
Un introduction très basique à HTML : http://www.w3.org/TR/html/. Important : Votre document XHTML ne contiendra que des informations liées à la structure logique du document mais aucune instructions de présentation.
Créer une feuille de style CSS (http://www.w3.org/TR/CSS2/) qui décrit précisément la présentation à associer au document XHTML précédent.
Des éditeurs CSS existent (par exemple bluefish http://bluefish.openoffice.nl/ sous Linux) ou un un mode emacs.
Vous pouvez utiliser comme point de départ la page dédiée du W3C http://www.w3.org/Style/CSS/.
Il est possible d’écrire une feuille de style qui s’applique directement au document XML précédent (CSS s’applique à HTML et
à XML). ECrivez une feuille de style “simple” pour le document books.xml
Ecrire une feuille de style XSLT qui s’applique au document “book.xml” et produit un histogramme illustrant le nombre d’auteur de chaque livre.
La présentation du document pourra être réalisée en utilisant le langage XSLT-FO à la place de XHTML+CSS. Ecrire une feuille XSLT qui transforme le document sortie.xml en XSL-FO. Le document obtenu pour être transformé en pdf avec fop (cf. TP 1).
Une description de XSL-FO pourra être trouvée ici : http://www.w3.org/TR/xsl et un tutoriel ici : http://www.renderx.com/Tests/doc/html/tutorial.html
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="xml" encoding="UTF-8" indent="yes"/> <xsl:template match="/"> <Resultat> <Catégories><xsl:apply-templates select=".//Category"/></Catégories> <Livres><xsl:apply-templates select=".//Item"/></Livres> </Resultat> </xsl:template> <xsl:template match="Category"> <Categorie> <Code><xsl:value-of select="@code"/></Code> <Desc><xsl:value-of select="@desc"/></Desc> </Categorie> </xsl:template> <xsl:template match="Item"> <Livre><xsl:apply-templates/></Livre> </xsl:template> <xsl:template match="Title"> <h1><xsl:apply-templates/></h1> </xsl:template> <xsl:template match="Authors"> <div><xsl:apply-templates/></div> </xsl:template> <xsl:template match="Author"> <h2><xsl:apply-templates/></h2> </xsl:template> <xsl:template match="text()"> </xsl:template> <xsl:template match="Title/text()|Author/text()"> <xsl:value-of select="."/> </xsl:template> </xsl:stylesheet>