Sie sind auf Seite 1von 33

XSL-FO

XSL-FO FOP XSLT


(alain.bouju@univ-lr.fr) (http://perso.univ-lr.fr/abouju)

XSL-FO

XSL-FO ?
XSL-FO est un langage pour formater des donnes XML XSL-FO est Extensible Stylesheet Language Formatting Objects XSL-FO est maintenant appel XSL

XSL-FO
XSL-FO est un langage XML, pour permettre une sortie ou visualisation sur un cran ou sur du papier Il n'y a pas de diffrence entre XSL et XSL-FO Pour dfinir un style il faut un format et des transformations, Dans le document de dpart de normalisation du XSL Working Group Il y a un langage pour le format et la transformation.

XSL-FO
Le Working Group propose maintenant plusieurs recommandation :

XSLT un langage pour la transformation de documents XML XSL ou XSL-FO un langage pour le formatage de document XML XPATH un langage pour naviger dans des documents XML

(http://www.w3.org/TR/xslt ou http://www.w3.org/TR/xslt20)

(http://www.w3.org/TR/xsl/ ou http://www.w3.org/TR/xsl11/) (http://www.w3.org/TR/xpath ou http://www.w3.org/TR/xpath20/)

XSL-FO
Les documents XSL-FO sont des documents XML pour visulaisation Ils contiennent des informations sur la prsentation et le contenu Les fichiers XSL-FO sont des fichiers avec une extension .fo et .fob Les documents XSL-FO ont souvent une extension .xml pour les outils XML (editeur, ...)

XSL-FO Structure

Structure XSL-FO
<?xmlversion="1.0"encoding="ISO88591"?> <fo:rootxmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layoutmasterset> <fo:simplepagemastermastername="A4"> <!Pagetemplategoeshere> </fo:simplepagemaster> </fo:layoutmasterset> <fo:pagesequencemasterreference="A4"> <!Pagecontentgoeshere> </fo:pagesequence> </fo:root>

XSL-FO Structure
Dclaration XML <?xmlversion="1.0"encoding="ISO88591"?> La racine est fo:root et l'espace de nom fo: <fo:rootxmlns:fo="http://www.w3.org/1999/XSL/Format"> Le document </fo:root> Dfinition des formats des pages <fo:layoutmasterset> Description des formats </fo:layoutmasterset> Exemple pour dfinir une page A4 <fo:simplepagemastermastername="A4"> Dfinition de la forme de la page </fo:simplepagemaster>
7

XSL-FO Structure
Dfinition des donnes <fo:pagesequencemasterreference="A4"> Contenu des pages </fo:pagesequence>

XSL-FO Areas
XSL-FO Areas permet de dfinir des boites qui permettent d'organiser la visualisation On trouve en particulier les zones suivantes : Pages Regions Block areas Line areas Inline areas

XSL-FO Pages
XSL-FO Permet de dfinir la page qui est l'unit de base d'un document. Elle contient des XSL-FO Regions

10

XSL-FO Regions
XSL-FO Regions Chaque page contient un ensemble de rgion region-body (the body of the page) region-before (the header of the page) region-after (the footer of the page) region-start (the left sidebar) region-end (the right sidebar) Les rgions contiennent des Block Areas

11

XSL-FO Block Areas


XSL-FO Block Areas Les Block Areas dfinissent des blocs comme des paragraphes des tableaux, des listes. Les Block Areas contiennent des Block Area ou des LineArea

12

XSL-FO Line Areas


XSL-FO Line Areas Les Line Areas dfinissent des lignes de texte dans des Block Area. Les Line Area contiennent des Inline Areas

13

XSL-FO Inline Areas


XSL-FO Inline Areas Les Inline Areas dfinissent du texte des Line Areas. Les Inline Areas peuvent contenir des caractres, des graphiques, ...

14

XSL-FO Page, Flow, Block


Les pages XSL sont en gnral organise en Page, Flow, Block
<fo:pagesequence> <fo:flowflowname="xslregionbody"> <fo:block> Contenu </fo:block> </fo:flow> </fo:pagesequence>

15

XSL-FO Exemple
Exemple Bonjour
<?xmlversion="1.0"encoding="ISO88591"?> <fo:rootxmlns:fo="http://www.w3.org/1999/XSL/Format"> <fo:layoutmasterset> <fo:simplepagemastermastername="A4"> <fo:regionbody/> </fo:simplepagemaster> </fo:layoutmasterset> <fo:pagesequencemasterreference="A4"> <fo:flowflowname="xslregionbody"> <fo:block>Bonjour</fo:block> </fo:flow> </fo:pagesequence> </fo:root>
16

Apache FOP XSL-FO (Formatting Objects)


Dans le cadre du projet Apache Une librairie a t dveloppe pour permettre la cration de document respectant le format XSL - FO (http://xmlgraphics.apache.org/fop/)

17

XSL-FO Exemple
Exemple Bonjour

18

XSL-FO Page sequences


Un document comporte une suite de pages
<fo:pagesequence> </fo:pagesequence>

Chaque page fait rfrence une page master qui dfinit la mise en page Chaque page comporte un lment
<fo:flow>

Chaque page est affiche ou imprime en squence Si le contenu comporte plusieurs pages on garde la mme mise en page

19

XSL-FO Flow
Une page comporte donc un :
<fo:flow> </fo:flow>

Les <fo:flow>comportent un attribut flow-name xsl-region-body (into the region-body) xsl-region-before (into the region-before) xsl-region-after (into the region-after) xsl-region-start (into the region-start) xsl-region-end (into the region-end)

Chaque page est affiche ou imprime en squence

20

XSL-FO Page Templates


Une page comporte donc un layout master page
<fo:layoutmasterset> <fo:simplepagemastermastername="A4" pagewidth="210mm"pageheight="297mm"margin="2cm"> </fo:simplepagemaster> </fo:layoutmasterset>

On utilise ensuite la mise en page dfinit


<fo:pagesequencemasterreference="A4"> <!Pagecontentgoeshere> </fo:pagesequence>

21

XSL-FO Page
Attributs Page : page-width largeur de la page page-height hauteur de la page Marges : margin-top marge haute margin-bottom marge basse margin-left marge gauche margin-right marge droite margin permet de dfinir les quatres marges

22

XSL-FO Page
Attributs

region-body rgion principale region-before la rgion haute (header) region-after la rgion basse (footer) region-start la rgion gauche (left sidebar) region-end la rgion droite (right sidebar)

23

XSL-FO Page
Example
<fo:simplepagemastermastername="A4" pagewidth="297mm"pageheight="210mm" margintop="1cm"marginbottom="1cm" marginleft="1cm"marginright="1cm"> <fo:regionbodymargin="3cm"/> <fo:regionbeforeextent="2cm"/> <fo:regionafterextent="2cm"/> <fo:regionstartextent="2cm"/> <fo:regionendextent="2cm"/> </fo:simplepagemaster>

24

XSL-FO Pages, Flow, and Block


Example de squence
<fo:pagesequence> <fo:flowflowname="xslregionbody"> <fo:block <!Texte> </fo:block> </fo:flow> </fo:pagesequence>

25

XSL-FO Images
Example pour inclure des images

<fo:externalgraphicsrc="url('ABouju.gif')"width="340px" height="238px"/>

26

XSL-FO Police
On peut dfinir la police dans un flow Helvetica (normal, bold, italic, bold italic), Times (normal, bold, italic, bold italic), Courier (normal, bold, italic, bold italic), Symbol and ZapfDingbats

<fo:flowflowname="xslregionbody"fontfamily="Helvetica" fontsize="12pt"> <!Texte> <fo:flow>

27

XSL-FO Images
Example pour inclure des images
<fo:externalgraphicsrc="url('ABouju.gif')"width="340px" height="238px"/>

28

XSLT
Les applications grent des donnes au format XML, Pour les diffuser il faut pouvoir les transormer dans un format utilisable pour la visualisation, l'impression,... Une solution est d'utiliser le langage de transformation XSLT pour transformer du XML en XSL-FO On pourra ensuite transformer le rsultat dans un format pour des applications comme html pour des navigateurs ou pdf ... Nous allons voir la procdure partir d'un exemple

29

XSLT - Example
On va prendre un exemple

On va transformer un fichier xml contenant un nom

La transformation xslt va permettre de dire Bonjour la personne

Pour cela on va utiliser l'utilitaire fop

30

XSLT Example XML


Le fichier de dpard XML comporte le nom
<?xmlversion="1.0"encoding="utf8"?> <name>AlainBOUJU</name>

31

XSLT Example XSL


Le fichier de dpard XSL comporte le nom
<?xmlversion="1.0"encoding="utf8"?> <xsl:stylesheetversion="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:outputmethod="xml"indent="yes"/> <xsl:templatematch="/"> <fo:root> <!definitionfo> <fo:block> Bonjour,<xsl:valueofselect="name"/>! </fo:block> </fo:pagesequence> </fo:root> </xsl:template> </xsl:stylesheet>
32

XSLT

33

Das könnte Ihnen auch gefallen