Table des matières

<texit info> author=E. Bruno title=XML TP3 </texit>

TP3 - Transformation de documents XML avec XSLT et présentation de documents HTML et XML avec CSS

Objectif

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:

Transformation pas à pas de XML vers XML

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 :

de la forme <Book category='…’><FirstAuthor>…</FirstAuthor><Title></Title></Book>

Avez-vous pensé à utiliser les modes ?

De XML à HTML

Ecrire une feuille XSLT qui transforme le document XML obtenu dans l’exercice précédent en un document XHTML.

Le document XHTML sans instructions de présentation

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.

La présentation avec une feuille de style CSS

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/.

XML+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

XML vers SVG

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.

Pour aller plus loin

XML vers XSL-FO

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

Exemple de solution

Un autre exemple de feuille de style

autre.xsl
<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>