XSL-FO - PowerPoint PPT Presentation

About This Presentation
Title:

XSL-FO

Description:

XSL-FO (XSL Formatting Objects) permet d'exprimer de mani re tr s pr cise le rendu d'un document. ... fouettez le beurre nergiquement et y ajoutez les sucres. ... – PowerPoint PPT presentation

Number of Views:133
Avg rating:3.0/5.0
Slides: 26
Provided by: gla93
Category:
Tags: xsl | ajoutez

less

Transcript and Presenter's Notes

Title: XSL-FO


1
XSL-FO
  • THEORIE
  • PRATIQUE

2
THEORIE XSL-FO
3
Présentation
  • XSL-FO (XSL Formatting Objects) permet dexprimer
    de manière très précise le rendu dun document.
    Il gère la pagination dun document, les notes de
    bas de page, les marges, Il est possible de
    préciser avec exactitude lemplacement des
    différents objets sur la page, les polices des
    caractères, laffichage de tableaux, etc.
  • Un document XSL-FO est assez pénible à réaliser à
    la main, cest pourquoi on utilise XSLT dans le
    but de générer du XSL-FO à partir de données au
    format XML.

4
Présentation
  • Ce langage, qui a failli tomber dans les
    oubliettes, doit sa renaissance à FOP (Formatting
    Object Processor).
  • FOP, développé dans le cadre du projet Apache,
    permet à partir dun document XSL-FO de générer
    un document PDF. Il représente ainsi la solution
    idéale pour lédition de factures ou de contrats
    sur le Web.

5
Architecture utilisée pour générer du PDF
  • Les données à présenter sont en XML. A partir
    dune feuille de style XSLT, on génère un
    document XSL-FO, à laide dun processeur XSLT.
  • On utilise ensuite un processeur FOP pour
    convertir le document XSL-FO en PDF.

6
Architecture utilisée pour générer du PDF
XML - données
XSLT
Processeur XSLT
Document XSL-FO
Processeur FOP
Document PDF
7
PRATIQUE XSL-FO
8
Exemple dorganisation dun fichier XSL-FO
  • Nous allons utiliser un exemple simple que nous
    avons créé afin de montrer les différentes
    composantes dun fichier XSL-FO.
  • Il est possible de trouver les exemples à
    ladresse http//tecfa.unige.ch/staf/staf-g/glaus
    /staf2x/ex3/recette

9
Fichier XML
  • lt?xml version"1.0" encoding"ISO-8859-1"?gt
  • lt?xml-stylesheet href"recettefo.xsl"
    type"text/xsl"?gt
  • lt?cocoon-process type"xslt"?gt
  • lt!DOCTYPE recette SYSTEM "recette.dtd"gt
  • ltrecettegt
  • lttitregtLes Bonnes Recettes de Cuisinelt/titregt
  • ltgateau photo"gateau.gif"gt
  • lttypegtGâteau aux Noix et au Chocolat blanclt/typegt
  • ltingredientsgt
  • ltingredientgt250g de chocolat blanclt/ingredientgt
  • ltingredientgt60g de noixlt/ingredientgt
  • ltingredientgt10g de levure chimiquelt/ingredientgt
  • lt/ingredientsgt

10
Feuille de style XSL-FO
  • On appelle une page XSL-FO de la manière
    suivante
  • lt?xml version"1.0" encoding"ISO-8859-1"?gt
  • ltxslstylesheet version"1.0"
  • xmlnsxsl"http//www.w3.org/1999/XSL/Transform"
  • xmlnsfo"http//www.w3.org/1999/XSL/Format"gt
  • ltxsltemplate match"recette"gt
  • ltxslprocessing-instruction name"cocoon-format"gtt
    ype"text/xslfo"lt/xslprocessing-instructiongt
  • ltforoot xmlnsfo"http//www.w3.org/1999/XSL/Form
    at"gt

11
Page layout
Page top margin
BEFORE
Page
Page
left
START
right
END
BODY
margin
margin
AFTER
Page bottom margin
12
Architecture de la racine FO
  • Sous la racine foroot il y a toujours
  • un folayout-master-set qui définit un ou
    plusieurs page layout définis avec
    fosimple-page-master
  • des déclarations à option fodeclarations
  • une séquence dun ou plusieurs fopage-sequences
    qui contiennent du texte (littéralement ou
    fournis par XSLT) et des instructions de
    formatage.

13
Squelette XSL-FO de base
  • ltxsltemplate match"page"gt
  • ltforootgt
  • ltfolayout-master-setgt
  • lt!-- Definition of a single master page. It is
    simple (no headers etc.) --gt
  • ltfosimple-page-master master-name"first" gt
  • lt!-- required element body --gt
  • ltforegion-body/gt
  • lt/fosimple-page-mastergt
  • lt/folayout-master-setgt
  • lt!-- Definition of a page sequence --gt
  • ltfopage-sequence master-name"first"gt
  • ltfoflow flow-name"xsl-region-body"
    font-size"14pt" line-height"14pt"gt
  • ltxslapply-templates/gt
  • lt/foflowgt
  • lt/fopage-sequencegt

14
Pagination
  • ltfolayout-master-setgt
  • ltfosimple-page-master master-name"first"
  • page-height"29.7cm"
  • page-width"21cm"
  • margin-top"1cm"
  • margin-bottom"2cm"
  • margin-left"2.5cm"
  • margin-right"2.5cm"gt
  • ltforegion-body margin-top"1cm"/gt
  • ltforegion-before extent"1cm"/gt
  • ltforegion-after extent"1.5cm"/gt
  • lt/fosimple-page-mastergt
  • ltfosimple-page-master master-name"right"
  • page-height"29.7cm"
  • page-width"21cm"
  • margin-top"1cm"
  • margin-bottom"2cm"

15
Pagination
  • ltfosimple-page-master master-name"left"
  • page-height"29.7cm"
  • page-width"21cm"
  • margin-top"1cm"
  • margin-bottom"2cm"
  • margin-left"2.5cm"
  • margin-right"2.5cm"gt
  • ltforegion-body margin-top"1cm"/gt
  • ltforegion-before extent"1cm"/gt
  • ltforegion-after extent"1.5cm"/gt
  • lt/fosimple-page-mastergt
  • ltfopage-sequence-master master-name"run"gt
  • ltforepeatable-page-master-alternatives
    maximum-repeats"no-limit" gt
  • ltfoconditional-page-master-reference
    master-reference"left" odd-or-even"even" /gt
  • ltfoconditional-page-master-reference
    master-reference"right" odd-or-even"odd" /gt
  • ltfoconditional-page-master-reference
    master-reference"title"/gt
  • lt/forepeatable-page-master-alternativesgt

16
Pagination
  • lt!-- actual layout --gt
  • ltfopage-sequence master-reference"run"
    initial-page-number"1"gt
  • ltfostatic-content flow-name"xsl-region-before"
    gt
  • ltfoblock text-align"end" font-size"10pt"
    font-family"sans-serif" line-height"11pt"
    color"lightslategray" gt
  • ltxslvalue-of select"titre"/gt -
  • ltfopage-number/gt
  • lt/foblockgt
  • lt/fostatic-contentgt
  • ltfoflow flow-name"xsl-region-body"
    font-size"12pt" line-height"11pt"gt
  • ltxslapply-templates/gt
  • lt/foflowgt
  • lt/fopage-sequencegt
  • lt/forootgt
  • lt/xsltemplategt

17
Les listes
  • Mécanisme puissant listes ordinaires, notes en
    bas de page, simples tables, etc.
  • folist-block
  • folist-item
  • folist-item-label
    folist-item-body
  • folist-block contient la liste et contient
    quelques définitions pour la géométrie
  • folist-item enfants de folist-block, c.a.d.
    des items qui contiennent un label et un body
    (voir ci-dessous)
  • fo folist-item-label contient le contenu du
    label (typiquement un foblock avec un nombre, un
    caractère dingbat, etc.)
  • The folist-item-body contient le corps dun
    item, un ou plusieurs foblock

18
Une simple  bullet-list 
  • ltxsltemplate match"ingredients"gt
  • ltfoblock color"navy" font-size"12pt"
    text-align"justify" space-before.optimum"15pt"
    background-color"lavender"gtIngrédients
    lt/foblockgt
  • ltxslapply-templates select"ingredient" /gt
  • lt/xsltemplategt
  • ltxsltemplate match"ingredient"gt
  • ltfolist-block space-before.optimum"4pt"gt
  • ltfolist-item space-before.optimum"4pt"gt
  • ltfolist-item-label end-indent"label-end()"gtltfo
    blockgtlt/foblockgt
  • lt/folist-item-labelgt
  • ltfolist-item-body start-indent"body-start()"gt
  • ltfoblock text-align"justify"
    font-size"10pt"gt
  • ltxslvalue-of select"." /gt
  • lt/foblockgt
  • lt/folist-item-bodygt
  • lt/folist-itemgt
  • lt/folist-blockgt
  • lt/xsltemplategt

19
Les tables
  • ressemblent un peu aux tables HTML
  • fotable-and-caption
  • fotable-caption fotable
  • fotable-column fotable-header fotable-body fo
    table-footer
  • fotable-row fotable-row fotable-row
  • fotable-cell fotable-cell fotable-cell
  • fotable-and-caption
  • fotable-caption La caption dune table
  • fotable la table proprement dite. Elle contien
    header et footer à option et un body.
  • fotable-column permet de specifier notamment la
    longeur dune colonne
  • fotable-header Ligne entête, contient des
    lignes ou cellules
  • fotable-footer Ligne "footer", contient des
    lignes ou cellules

20
Un tableau à deux colonnes
  • ltxsltemplate match"gateau"gt
  • ltfotable table-layout"fixed"
    space-before.optimum"15pt"gt
  • ltfotable-column column-number"1"
    column-width"5cm" /gt
  • ltfotable-column column-number"2"
    column-width"10cm" /gt
  • ltfotable-bodygt
  • ltfotable-rowgt
  • ltfotable-cell column-number"1"gt
  • ltfoblock space-before.optimum"12pt"gt
  • ltfoexternal-graphic src"_at_photo"
    /gt
  • lt/foblockgt
  • lt/fotable-cellgt
  • ltfotable-cell column-number"2"gt
  • ltfoblock color"navy"
    font-size"16pt" text-align"center" space-
    before.optimum"15pt"gt
  • ltxslapply-templates select"type"
    /gt
  • lt/foblockgt
  • lt/fotable-cellgt
  • lt/fotable-rowgt
  • lt/fotable-bodygt
  • lt/fotablegt

21
Les images
  • Linsertion dune image se fait avec le tag
  • ltfoexternal-graphic src"image"/gt

22
Insertion dune image
  • ltxsltemplate match"gateau"gt
  • ltfoblock color"navy" font-size"16pt"
    text-align"center" space before.optimum"15pt"gt
  • ltxslapply-templates select"type" /gt
  • lt/foblockgt
  • ltfoblock space-before.optimum"12pt"gt
  • ltfoexternal-graphic src"_at_photo" /gt
  • lt/foblockgt
  • lt/xsltemplategt
  • Résultat http//tecfa.unige.ch/staf/staf-g/glaus
    /staf2x/ex3/recette/image.pdf

23
Les liens
  • Linsertion dun lien Internet ou dune adresse
    E-mail se fait avec le tag
  • ltfobasic-link external-destination"http//tecf
    a.unige.ch"gt
  • Autres liens possibles
  • internal-destination
  • indicate-destination
  • show-destination
  • destination-placement-offset
  • target-presentation-context
  • target-processing-context
  • target-stylesheet

24
Insertion dun lien
  • ltxsltemplate match"internet"gt
  • ltfoblock color"navy" font-size"12pt"
    text-align"justify" space-before.optimum"12pt"
    background-color"lavender"gt
  • Site Internet
  • lt/foblockgt
  • ltfoblock color"navy" font-size"12pt"
    text-align"justify" space-before.optimum"15pt"gt
  • ltfobasic-link external-destination"."gt
  • ltxslvalue-of select"." /gt
  • lt/fobasic-linkgt
  • lt/foblockgt
  • lt/xsltemplategt
  • Résultat http//tecfa.unige.ch/staf/staf-g/glaus
    /staf2x/ex3/recette/lien.pdf

25
Exemple complet
  • Résultat final après avoir mis les différents
    éléments ensemble
  • http//tecfa.unige.ch/staf/staf-g/glaus/staf2x/ex
    3/recette/recettefo.xsl
  • Résultat final en PDF
  • http//tecfa.unige.ch/staf/staf-g/glaus/staf2x/ex
    3/recette/recette.pdf
Write a Comment
User Comments (0)
About PowerShow.com