Nous détaillons la « Stylesheet » de façon fragmentaire; le document est présenté dans son entièreté
plus bas.
Nous déclarons le document XSL qui est conforme à la version XSL 1.0 et est lui même un
document XML.
La mention de xmlns:xsl=”http://www.w3.org/1999/XSL/Transform” indique au processeur XSLT qu’il
devra utiliser le « namespace » correspondant (Transform).
MéNous sélectionnons l’élément « presentation » qui est l’élément racine du fichier XML que nous
voulons transformer.
L’élément racine du fichier XSL-FO est déclaré, avec une précision pour le processeur
(xmlns:fo=”http://www.w3.org/1999/XSL/Format”), qui devra utiliser le « Namespace » « Format »
pour la transformation FO.
Nous déclarons le « fo:layout-master-set » contenant le « simple-page-master » dont le « master-name »
est « expdf » . Nous y décrivons le format de page qui sera utilisé : une feuille A4 (21 * 29,5 cm).
Les marges seront de 2cm.
Le « page-sequence-master-reference » est déclaré, il fait référence à « expdf ».
Le flow (qui génère le contenu des pages) écrira dans la région « body ».
Ici commence la sélection de ce qui devra être affiché en sortie de traitement.
La notion de « block-level » que nous évoquions plus haut est utilisée.
Dans la première ligne, nous déclarons que l’ensemble du contenu devra être encadré d’une bordure
noire épaisse de 2px.
Cette première balise sera refermée après la déclaration de tous les blocs suivants.
Puis en seconde ligne nous déclarons le premier « block » qui sera le titre « Résultats financiers de la
commande ».
La police, sa taille, son épaisseur, le mode d’alignement du texte sont déclarés; ce titre devra être encadré en
couleur « olive ».
Puis vient une zone portant le titre « Commande », suivi d’une zone reprenant les informations de
l’arbre XML de départ: “commande/id_commande”, “commande/nom”, et “commande/descriptif”.
Nous sélectionnons ces éléments via l’instruction « xsl:value-of select » suivi d’une expression Xpath
« commande/id_commande ».
Chaque élément sélectionné est précédé d’un commentaire: « – Référence Commande: », « – Client: », « –
Détail de la commande: » dont le but est de faciliter la compréhension et d’enrichir la présentation des
éléments XML de départ.
Nous créons une zone similaire à la précédente selon exactement les mêmes principes.
Le titre encadré devient « Calcul de rentabilité », les données sélectionnées dans l’arbre XML de résultat
sont “resultats/chiffre_affaire”, “charges/cout_direct”, “resultats/marge_brute”, “charges/cout_abc_
commande”, “resultats/marge_nette”.
Les commentaires sont : « Chiffre d’affaire de la commande: », « ( – ) Charge Directe: », « ( = ) Marge
Brute: », « ( – ) Charge indirecte (ou coût ABC): » et « ( = ) Marge Nette: ».
La ligne dédiée à l’élément « resultats/marge_nette » est encadrée de rouge.
Enfin, un commentaire est placé à la suite de chaque élément sélectionné afin de préciser l’unité monétaire:
« Euro ».
Enfin, en une troisième zone, identique, nous présentons les données issues du calcul de ratios.
Le titre: « Présentation sous forme de ratios ».
Nous présentons également les éléments: « ratios/a », « ratios/b », « ratios/c », et « ratios/d ».
Nous commentons chacun des éléments: « Proportion Charges Directes dans le chiffre d’affaire: »,
« Proportion Marge Brute dans le chiffre d’affaire: », « Proportion Charges Indirectes dans le chiffre
d’affaire: », et « Proportion Marge Nette dans le chiffre d’affaire: ».
Chaque élément est suivi du signe « % ».
Ci-dessous, la « stylesheet » complète.