XSL-FO THEORIE PRATIQUE.

Slides:



Advertisements
Présentations similaires
Portail Sdin Méthodes pour la contribution du portail SDIN Mars 2013.
Advertisements

HTML Abda Anne Plan Présentation Structure Texte Listes Images Liens Tableaux Formulaires.
Introduction aux Web Services Partie 1. Technologies XML
1 3.Langage XSL = XSLT + XSL-FO transformationFormatage.
Transformation de documents XML
le langage les éléments
Domaines nominaux XSLT
version Beta Marie Calberg Ninni Louhelainen SLFN7
Manipulation d’XML avec XSL
CREATION DE FEUILLE DE STYLE pour structuré le document XML
Définition : C'est un format de données qui permet de réaliser des sommaires Un « flux RSS » est un fichier texte qui contient les titres des derniers.
Introduction aux Web Services Partie 1. Technologies HTML-XML
Applications Internet – cours 3 La page web
Nouveau blog. WordPress connexion Nommez votre blog.
HTML.
Présentation de la séquence de cours sur les interactions HTML-javascript Laure Walser, 11 juin 2010.
17 octobre 2012 Grégory Petit
Les instructions PHP pour l'accès à une base de données MySql
Excel Introduction.
Introduction à la structuration des documents: les techniques M2: Gestion des connaissances.
Conservatoire National des Arts et des Métiers de Paris Représentation et édition de documents XML.
Xpath XML Path language par Yves Bekkers
© Glaus & Ruckstuhl TECFA Le Processeur Apache / FOP.
Rappel (très) succint d’éléments techniques (XML, DTD, XSL, PHP)
STAF 2X XSL/FO Glaus & Ruckstuhl Mars © Glaus & Ruckstuhl TECFA Programme du 18 et 19 mars Revision XML Introduction à XSL/FO (intérêts et.
HTML / CSS Gestion des systèmes d’information Classe terminale
Initialisation des sites web Étapes importantes. La conversion de vos comptes Web nest pas terminée (après discussion avec les techniciens voici comment.
CSS : Quelques exemples de mise en page fluide en n colonnes
XSLT : trier et mettre en valeur le contenu d’un document XML
Support des connaissances TP2 XSL-T
31 octobre 2012 Grégory Petit
XML Plan du cours Introduction au fichier XML
Les feuilles de style CSS
8 - XML Cours XML.
Les outils de base : XPath, XSL, XLink, XForms
XSL eXtensible Stylesheet Language Historique 1999: XSLT 1.0 et XPATH 1.0 : versions supportées par la plupart des outils depuis février 2007 XSLT 2.0.
Créer son site web Chapitre II. Les caractères spéciaux Les navigateurs ne reconnaissent pas les caractères spéciaux. Heureusement chaque caractère possède.
LE HTML ISN Terminale S Un peu d’histoire …
XML Stylesheet Language
Internet : serveurs Web  Clients et serveurs : le navigateur  Sites Web et urls  Fichier source d’une page  Langage HTML 1.
Technologies web et web sémantique TP3 - XML. XML eXtensible Markup Language (langage extensible de balisage) – Caractéristiques: méta-langage = un langage.
Publication et Traitement avec XSL
S'initier au HTML et aux feuilles de style CSS Cours 5.
SMIL Synchronized Multimedia Integration Language
 G. Gardarin Les outils de base: Publication avec XML 1. XPATH 2. XSLT 3. XSLFO 4. XLink, XForms, RSS, … 5. XML et la bureautique.
INTERNET Le langage HTML
Soutenance du mémoire de synthèse
IUT SRC Année 2004/2005Antonio Capobianco 1 HTML>Les tableaux>Créer des tableaux Intérêt : Les tableaux en HTML peuvent servir à : - présenter/organiser.
Introduction à CSS Généralités. Introduction Beaucoup de documents XML sont destinés à être présentés. Les information du fichier seul (avec ou sans DTD)
Utilisation de XML Exemple illustratif ethnocuisine.com.
Cours de HTML suite applications
Html et css.
HTML Rappels des fondamentaux
D é veloppement de sites web statiques Par DRISS AIT EL HADJ Par DRISS AIT EL HADJ Avril 2012.
Language html Hyper Text Markup Language
Dreamweaver Séance 1.
1 Présentation de DREAMWEAVER (1) Gaël TREMEAU GI05 Printemps 2006.
Présentation de Dreamveawer
Dreamweaver MX Jauneau Marie Claude-Antoine Zarate.
Présentation Dreamweaver 8 (1) Nina BOUAZIZ et Matthieu DI RUSSO SI28.
DREAMWEAVER Première séance Villaron Audrey – Shibly Tarek.
Plan de la présentation Le langage HTML Dreamweaver MX Les premiers outils pour créer une page web :  Propriétés d’une page  Création de cadres  Création.
SI28 Malépart Céline Jérémy Palmier
Dreamweaver (2) ● les calques (layers) ● les comportements
Dreamweaver 2 Plan 1.Calques 2.CSS 3.Modèles 4.Comportements 5.Formulaires 6.Mise en ligne 1 Timothée Devaux Myriam Roudy Dreamweaver 2 Printemps 2008.
On va découvrir la magie de ....
Introduction au HTML Qu’est ce que le HTML ?
Dreamweaver CS4 séance 1 Ahmed Aryan – Isma Teir.
1 er séance SI28 A2004 YIN Lei Emmanuel Eugene. Plan de l’exposé  Introduction au HTML  Le HTML dans le bloc-notes (notepad)  Présentation de Dreamweaver.
TP ISN-Terminale S Notion de code HTML. I) Visualisation du code source d’une page web Se mettre sur une page web quelconque : clic droit, Afficher la.
Transcription de la présentation:

XSL-FO THEORIE PRATIQUE

THEORIE XSL-FO

Présentation XSL-FO (XSL Formatting Objects) permet d’exprimer de manière très précise le rendu d’un document. Il gère la pagination d’un document, les notes de bas de page, les marges,… Il est possible de préciser avec exactitude l’emplacement des différents objets sur la page, les polices des caractères, l’affichage de tableaux, etc. Un document XSL-FO est assez pénible à réaliser à la main, c’est pourquoi on utilise XSLT dans le but de générer du XSL-FO à partir de données au format XML.

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 d’un 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.

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

Architecture utilisée pour générer du PDF XML - données XSLT Processeur XSLT Document XSL-FO Processeur FOP Document PDF

PRATIQUE XSL-FO

Exemple d’organisation d’un fichier XSL-FO Nous allons utiliser un exemple simple que nous avons créé afin de montrer les différentes composantes d’un fichier XSL-FO. Il est possible de trouver les exemples à l’adresse: http://tecfa.unige.ch/staf/staf-g/glaus/staf2x/ex3/recette

Fichier XML <?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet href="recettefo.xsl" type="text/xsl"?> <?cocoon-process type="xslt"?> <!DOCTYPE recette SYSTEM "recette.dtd"> <recette> <titre>Les Bonnes Recettes de Cuisine</titre> <gateau photo="gateau.gif"> <type>Gâteau aux Noix et au Chocolat blanc</type> <ingredients> <ingredient>250g de chocolat blanc</ingredient> <ingredient>60g de noix</ingredient> … <ingredient>10g de levure chimique</ingredient> </ingredients> <preparation> Faites ramollir le beurre dans un petit bol, lui même dans un grand bol d'eau très chaude. fouettez le beurre énergiquement et y ajoutez les sucres. ajoutez l'oeuf entier … </preparation> <internet>http://www.medi1.com/scripts/recettes.php3?r=616</internet> </gateau> </recette>

Feuille de style XSL-FO On appelle une page XSL-FO de la manière suivante: <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format"> <xsl:template match="recette"> <xsl:processing-instruction name="cocoon-format">type="text/xslfo"</xsl:processing-instruction> <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

Page layout Page top margin BEFORE Page Page left START right END BODY AFTER Page bottom margin

Architecture de la racine FO Sous la racine fo:root il y a toujours: un fo:layout-master-set qui définit un ou plusieurs page layout définis avec fo:simple-page-master des déclarations à option fo:declarations une séquence d’un ou plusieurs fo:page-sequences qui contiennent du texte (littéralement ou fournis par XSLT) et des instructions de formatage.

Squelette XSL-FO de base <xsl:template match="page"> <fo:root> <fo:layout-master-set> <!-- Definition of a single master page. It is simple (no headers etc.) --> <fo:simple-page-master master-name="first" > <!-- required element body --> <fo:region-body/> </fo:simple-page-master> </fo:layout-master-set> <!-- Definition of a page sequence --> <fo:page-sequence master-name="first"> <fo:flow flow-name="xsl-region-body" font-size="14pt" line-height="14pt"> <xsl:apply-templates/> </fo:flow> </fo:page-sequence> </fo:root> </xsl:template>

Pagination <fo:layout-master-set> <fo:simple-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"> <fo:region-body margin-top="1cm"/> <fo:region-before extent="1cm"/> <fo:region-after extent="1.5cm"/> </fo:simple-page-master> <fo:simple-page-master master-name="right"

Pagination <fo:simple-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"> <fo:region-body margin-top="1cm"/> <fo:region-before extent="1cm"/> <fo:region-after extent="1.5cm"/> </fo:simple-page-master> <fo:page-sequence-master master-name="run"> <fo:repeatable-page-master-alternatives maximum-repeats="no-limit" > <fo:conditional-page-master-reference master-reference="left" odd-or-even="even" /> <fo:conditional-page-master-reference master-reference="right" odd-or-even="odd" /> <fo:conditional-page-master-reference master-reference="title"/> </fo:repeatable-page-master-alternatives> </fo:page-sequence-master> </fo:layout-master-set> <!-- end: defines page layout -->

Pagination <!-- actual layout --> <fo:page-sequence master-reference="run" initial-page-number="1"> <fo:static-content flow-name="xsl-region-before"> <fo:block text-align="end" font-size="10pt" font-family="sans-serif" line-height="11pt" color="lightslategray" > <xsl:value-of select="titre"/> - <fo:page-number/> </fo:block> </fo:static-content> <fo:flow flow-name="xsl-region-body" font-size="12pt" line-height="11pt"> <xsl:apply-templates/> </fo:flow> </fo:page-sequence> </fo:root> </xsl:template>

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

Une simple « bullet-list » <xsl:template match="ingredients"> <fo:block color="navy" font-size="12pt" text-align="justify" space-before.optimum="15pt" background-color="lavender">Ingrédients :</fo:block> <xsl:apply-templates select="ingredient" /> </xsl:template> <xsl:template match="ingredient"> <fo:list-block space-before.optimum="4pt"> <fo:list-item space-before.optimum="4pt"> <fo:list-item-label end-indent="label-end()"><fo:block>·</fo:block> </fo:list-item-label> <fo:list-item-body start-indent="body-start()"> <fo:block text-align="justify" font-size="10pt"> <xsl:value-of select="." /> </fo:block> </fo:list-item-body> </fo:list-item> </fo:list-block> Résultat : http://tecfa.unige.ch/staf/staf-g/glaus/staf2x/ex3/recette/liste.pdf

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

Un tableau à deux colonnes <xsl:template match="gateau"> <fo:table table-layout="fixed" space-before.optimum="15pt"> <fo:table-column column-number="1" column-width="5cm" /> <fo:table-column column-number="2" column-width="10cm" /> <fo:table-body> <fo:table-row> <fo:table-cell column-number="1"> <fo:block space-before.optimum="12pt"> <fo:external-graphic src="{@photo}" /> </fo:block> </fo:table-cell> <fo:table-cell column-number="2"> <fo:block color="navy" font-size="16pt" text-align="center" space- before.optimum="15pt"> <xsl:apply-templates select="type" /> </fo:table-row> </fo:table-body> </fo:table> </xsl:template> Résultat : http://tecfa.unige.ch/staf/staf-g/glaus/staf2x/ex3/recette/table.pdf

Les images L’insertion d’une image se fait avec le tag : <fo:external-graphic src="image"/>

Insertion d’une image <xsl:template match="gateau"> <fo:block color="navy" font-size="16pt" text-align="center" space before.optimum="15pt"> <xsl:apply-templates select="type" /> </fo:block> <fo:block space-before.optimum="12pt"> <fo:external-graphic src="{@photo}" /> </xsl:template> Résultat : http://tecfa.unige.ch/staf/staf-g/glaus/staf2x/ex3/recette/image.pdf

Les liens L’insertion d’un lien Internet ou d’une adresse E-mail se fait avec le tag: <fo:basic-link external-destination="http://tecfa.unige.ch"> Autres liens possibles : internal-destination indicate-destination show-destination destination-placement-offset target-presentation-context target-processing-context target-stylesheet

Insertion d’un lien <xsl:template match="internet"> <fo:block color="navy" font-size="12pt" text-align="justify" space-before.optimum="12pt" background-color="lavender"> Site Internet : </fo:block> <fo:block color="navy" font-size="12pt" text-align="justify" space-before.optimum="15pt"> <fo:basic-link external-destination="{.}"> <xsl:value-of select="." /> </fo:basic-link> </xsl:template> Résultat : http://tecfa.unige.ch/staf/staf-g/glaus/staf2x/ex3/recette/lien.pdf

Exemple complet Résultat final après avoir mis les différents éléments ensemble : http://tecfa.unige.ch/staf/staf-g/glaus/staf2x/ex3/recette/recettefo.xsl Résultat final en PDF : http://tecfa.unige.ch/staf/staf-g/glaus/staf2x/ex3/recette/recette.pdf