XSL-FO I

Transcription

XSL-FO I
Ingénierie Documentaire
Langages de
publication
paginée
http://doc.crzt.fr
STÉPHANE CROZAT
Paternité - Partage des Conditions Initiales à l'Identique :
http://creativecommons.org/licenses/by-sa/2.0/fr/
16 octobre 2014
Table des
matières
I - Introduction à XSL-FO
5
A. Qu'est ce que XSL-FO ?..................................................................................5
B. Structure d'un fichier XSL-FO..........................................................................6
C. Exemple XSL-FO...........................................................................................6
II - Introduction à XHTML+CSS pour la publication PDF
9
A. Principe.......................................................................................................9
B. Exemple.....................................................................................................10
C. Flying Saucer..............................................................................................11
III - Exercices
13
A. Travaux pratiques FO et Flying Saucer...........................................................13
1. Exercice.........................................................................................................................13
2. Exercice.........................................................................................................................14
3. Exercice.........................................................................................................................16
Solution des exercices
19
Bibliographie
21
Contenus annexes
23
Stéphane Crozat (Contributions : David Rivron)
3
Introduction à
XSL-FO
I
I-
Qu'est ce que XSL-FO ?
5
Structure d'un fichier XSL-FO
6
Exemple XSL-FO
6
A. Qu'est ce que XSL-FO ?
Définition : XSL Formatting Objects
XSL-FO (on parle généralement plus simplement de FO) est la seconde partie du
langage XSL, qui définit un langage de présentation en vue de la publication de
documents imprimables. C'est un langage XML permettant d'obtenir un fichier PDF
une fois traité par un moteur de rendu FO.
Remarque : FO est un langage de publication
Le langage FO n'est pas destiné à être écrit manuellement, mais plutôt à être
obtenu automatiquement après une transformation XSL-XSLT.
XML source
(format métier)
Xalan
XSL-FO
XSL-XSLT
Fop
PDF
Graphique 1 Chaîne de publication FO (Technologies Apache)
Complément
: Moteurs FO

Apache FOP , moteur open source, ne supportant pas la totalité du standard

XEP2, moteur commercial, plus complet

Antenna House Formatter3
1
1 - http://xmlgraphics.apache.org/fop/
2 - http://www.renderx.com/
3 - http://www.antennahouse.com/
Stéphane Crozat (Contributions : David Rivron)
5
Introduction à XSL-FO
Introduction à XSL-FO
B. Structure d'un fichier XSL-FO
Un fichier XSL-FO est composé de deux parties :

La mise en page générale ou layout

Le contenu et sa mise en forme
Syntaxe
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="utf-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="...">
<!--mise en page -->
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="...">
<!--contenu -->
</fo:page-sequence>
</fo:root>
Syntaxe : Balisage de bloc
1
2
3
<fo:block attributs de stylage>
Contenu
</fo:block>
Syntaxe : Balisage inline
1
<fo:inline attributs de stylage>Contenu</fo:inline>
C. Exemple XSL-FO
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?xml version="1.0" encoding="utf-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="A4" page-height="297mm" pagewidth="210mm" margin-top="1cm" margin-bottom="1cm" margin-left="1cm"
margin-right="1cm">
<fo:region-body margin="3cm"/>
<fo:region-before extent="2cm"/>
<fo:region-after extent="2cm"/>
<fo:region-start extent="2cm"/>
<fo:region-end extent="2cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="A4">
<fo:flow flow-name="xsl-region-body">
<fo:block>
<fo:inline font-weight="bold">Hello world!</fo:inline>
</fo:block>
</fo:flow>
Stéphane Crozat (Contributions : David Rivron)
Stéphane Crozat (Contributions : David Rivron)
6
6
Introduction à XSL-FO
18
19
</fo:page-sequence>
</fo:root>
region-body
region-end
region-start
region-before
region-after
Graphique 2 Exemple de structure de page FO
Complément


: Pour aller plus loin
"Publier à partir de XML : Formatting Objects" (par Bruno Bachimont) (cf.
"Publier à partir de XML : Formatting Objects" (par Bruno Bachimont))
XML : Cours et exercice [Brillant07], pp157-167
Complément

Stylesheet Tutorial, Sample Files of Formatting Objects and Sample
Stylesheets
http://www.antennahouse.com/XSLsample/XSLsample.htm4
4 - http://www.antennahouse.com/XSLsample/XSLsample.htm
Stéphane Crozat (Contributions : David Rivron)
7
Introduction à
XHTML+CSS pour
la publication PDF
II -
II
Principe
9
Exemple
10
Flying Saucer
11
A. Principe
CSS introduit avec CSS 2.1 puis prolonge avec CSS3 des extensions pour gérer les
médias paginés.
En effet les pages XHTML destinées à l'écran ne sont pas paginées : le scrolling
permet d'étendre la taille d'une page à l'infini.
À l'inverse, lors d'une impression typiquement, la taille de la page est fixe.
Ces extensions recouvrent typiquement la gestion :

des format de papiers

des marges d'impression

des sauts de pages manuels et automatiques

des paragraphes solidaires

des veuves et orphelins

des numérotations de pages

des tables de matières

des entêtes et pieds de page

...
Schéma de principe
XML source
(format métier)
XHTML
Xalan
XSL-XSLT
Flying
Saucer
CSS
PDF
Chaîne de publication CSS (Technologies Apache et Flying Saucer)
Stéphane Crozat (Contributions : David Rivron)
9
Introduction à XHTML+CSS pour Introduction
la publicationàPDF
XHTML+CSS pour la publication PDF
Exemple
: Exemples de moteurs XHTML+CSS

PrinceXML

Référence commerciale (version d'évaluation disponible).
http://www.princexml.com/5
Flying Saucer

Moteur Open Source.
http://code.google.com/p/flying-saucer/6
Antenna House Formatter
http://www.antennahouse.com/7
Complément
: Standards associés

CSS3 Module: Paged Media, W3C Working Draft, 10 October 2006.

http://www.w3.org/TR/css3-page/8
CSS Paged Media Module Level 3, Editor's Draft, 6 October 2011.



http://dev.w3.org/csswg/css3-page/9
CSS Generated Content for Paged Media Module, W3C Working Draft,
08 June 2010.
http://www.w3.org/TR/css3-gcpm/10
CSS Fonts Module Level 3, W3C Working Draft, 4 October 2011.
http://www.w3.org/TR/css3-fonts/11
Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification,
W3C Recommendation, 07 June 2011.
http://www.w3.org/TR/CSS21/12
Rappel
Structure générale XHTML - p.23
Balises de base XHTML - p.23
Introduction à CSS - p.24
B. Exemple
Exemple
1
2
3
4
5
: XHTML
<html>
<head>
<title>Document</title>
<link href="exemple.css" type="text/css" rel="stylesheet"/>
</head>
5 - http://www.princexml.com/
6 - http://code.google.com/p/flying-saucer/
7 - http://www.antennahouse.com/
8 - http://www.w3.org/TR/css3-page/
9 - http://dev.w3.org/csswg/css3-page/
10 - http://www.w3.org/TR/css3-gcpm/
11 - http://www.w3.org/TR/css3-fonts/
12 - http://www.w3.org/TR/CSS21/
Stéphane Crozat (Contributions : David Rivron)
Stéphane Crozat (Contributions : David Rivron)
10
10
Introduction à XHTML+CSS pour la publication PDF
6
7
8
9
10
11
12
13
14
15
16
17
18
<body>
<h1>Document</h1>
<div id="chapter1" class="part chapter">
<h2>Chapitre 1</h2>
<p>...</p>
<p>...</p>
</div>
<div id="chapter2" class="part chapter">
<h2>Chapitre 2</h2>
<p>...</p>
</div>
</body>
</html>
Exemple
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
: CSS
@page {
size: A4 portrait;
margin: 2cm;
@bottom-right {
content: counter(page);
font-size: 8pt;
font-family: "Computer Modern";
text-align: right;
}
}
div.part {
page-break-before: always;
}
h1, h2 {
text-align: center;
}
p {
text-align: justify;
orphans: 0;
widows: 0;
}
Complément

Introduction to page composition with CSS
http://www.antennahouse.com/CSSInfo/index.html13
C. Flying Saucer
Flying Saucer est un moteur de rendu permettant de générer du PDF à partir d'une
source XHTML+CSS.
Il exploite les possibilités de CSS 2.1 et quelques fonctions CSS3.
Il est Open Source.
Fondamental : Programme Flying Saucer
Syntaxe : Ligne de commande Flying Saucer (Linux et Mac)
1
java -cp lib/core-renderer.jar:lib/iText-2.1.7.jar
13 - http://www.antennahouse.com/CSSInfo/index.html
Stéphane Crozat (Contributions : David Rivron)
11
Introduction à XHTML+CSS pour Introduction
la publicationàPDF
XHTML+CSS pour la publication PDF
org.xhtmlrenderer.simple.PDFRenderer <input.xhtml> <output.pdf>
Syntaxe : Ligne de commande Flying Saucer (Windows)
1
java -cp lib/core-renderer.jar;lib/iText-2.1.7.jar
org.xhtmlrenderer.simple.PDFRenderer <input.xhtml> <output.pdf>
Remarque

FS prend en entrée du XHTML, le fichier HMTL doit donc être un XML valide

FS échoue quelques fois à générer un nouveau PDF lorsque le fichier de
destination est ouvert (le supprimer en cas de problème).
Complément
http://code.google.com/p/flying-saucer/14
14 - http://code.google.com/p/flying-saucer/
Stéphane Crozat (Contributions : David Rivron)
Stéphane Crozat (Contributions : David Rivron)
12
12
III -
Exercices
III
Travaux pratiques FO et Flying Saucer
13
A. Travaux pratiques FO et Flying Saucer
1. Exercice
[45 min]
Soit les fichiers DITA ci-après.
1
2
3
4
5
6
7
8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?xml version="1.0" encoding="utf-8"?>
<!-- wheelbarrow.xml -->
<concept id="wheelbarrow" xml:lang="en-us">
<title>Wheel barrow</title>
<conbody>
<p>A good wheel barrow will save your back from extensive trauma
when you garden.</p>
</conbody>
</concept>
<?xml version="1.0" encoding="utf-8"?>
<!-- takinggarbage.xml -->
<task id="takinggarbage" xml:lang="en-us">
<title>Taking out the garbage</title>
<taskbody>
<steps>
<step><cmd>Find out from the town what day of the week garbage
is collected in your neighborhood.</cmd></step>
<step><cmd>The night before collection, place the garbage cans
on the curb.</cmd></step>
<step><cmd>After the garbage has been collected, move the cans
back into your garage.</cmd></step>
</steps>
</taskbody>
<related-links>
<link href="../concepts/lawnmower.xml" format="dita"
type="concept"><linktext>Lawnmower</linktext></link>
</related-links>
</task>
Question 1
[Solution n°1 p 19]
En utilisant Oxygen, produire une XSLT qui permet de publier en PDF via FO le
fichier de type concept.
Stéphane Crozat (Contributions : David Rivron)
13
Exercices
Exercices
Indices :
Oxygen : Transformations XSLT - p.25
Scénario de publication XSLT->FO->PDF avec Oxygen
Penser à la gestion des namespaces.
1
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format">
Question 2
Traiter de la même façon le fichier de type task.
2. Exercice
[45 minutes]
La réalisation de ce tutoriel porte sur la publication progressivement améliorée du
fichier XHTML disponible en exemple.
Installer et tester Flying Saucer.
Question 1
Lancer Flying Saucer en ne précisant aucune feuille de style (désactiver la feuille de
style dans le fichier XHTML) pour observer le stylage de base appliqué aux éléments
XHTML (FS contient une feuille de style par défaut).
Question 2
Appliquer un style simple sur les éléments (h1, h2, p) et observer les changements
dans le PDF : centrer les titres et justifier les paragraphes par exemple.
Question 3
Préciser un style de page qui réduit la taille des pages et augmente leurs marges.
Indice :
CSS3 Module: Paged Media
Section : "3. Page Boxes: the @page Rule"
Stéphane Crozat (Contributions : David Rivron)
Stéphane Crozat (Contributions : David Rivron)
14
14
Exercices
http://www.w3.org/TR/css3-page/#page-box-page-rule15
Question 4
Modifier la police du document, en utilisant la police Computer Modern spécifiée
dans le fichier polices/cmunrm.ttf du dossier de l'exemple.
Indices :
CSS Fonts Module Level 3
Section : "4 Font resources > 4.1 The @font-face rule"
http://www.w3.org/TR/css3-fonts/#font-face-rule16
Il faut déclarer un @font-face pour les 4 types de polices (normal, bold, italic,
bold/italic).
La propriété -fs-pdf-font-embed est spécifique à FS et permet d'embarquer la
police dans le PDF.
Question 5
Insérer des sauts de page avant chaque partie du document (div de classe part) et
éviter les veuves et les orphelins (adapter le document pour visualiser la gestion
des veuves et orphelins).
Indice :
CSS3 Module: Paged Media
Section : "5. Page Breaks"
http://www.w3.org/TR/css3-page/#page-breaks17
Question 6
Numéroter automatiquement les parties en utilisant un compteur personnalisé.
Indices :
Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification
Section : "Syntax and basic data types > 4.3.5 Counters"
http://www.w3.org/TR/CSS21/syndata.html#counter 18
La pseudo-classe :before permet d'insérer le compteur avant le contenu inline
de l'élément
Question 7
Insérer des numéros de page en marge, dont la position dépend si l'on se situe sur
une page paire ou impaire. On utilisera le compteur page géré en interne par le
moteur.
Indices :
CSS Generated Content for Paged Media Module
Section : "2. Running headers and footers"
http://www.w3.org/TR/css3-gcpm/#running-headers-and-footers19
Les @bottom-left, @bottom-right n'hérite de rien : il faut dupliquer les règles
de mise en forme (police, taille)
15 - http://www.w3.org/TR/css3-page/#page-box-page-rule
16 - http://www.w3.org/TR/css3-fonts/#font-face-rule
17 - http://www.w3.org/TR/css3-page/#page-breaks
18 - http://www.w3.org/TR/CSS21/syndata.html#counter
19 - http://www.w3.org/TR/css3-gcpm/#running-headers-and-footers
Stéphane Crozat (Contributions : David Rivron)
15
Exercices
Exercices
CSS Paged Media Module Level 3
Section : "7.1. Page-based counters"
http://dev.w3.org/csswg/css3-page/#page-based-counters20
Question 8
Insérer le titre du document en entête des pages.
L'élément portant le contenu à mettre en marge doit être sorti du "flot" par la
propriété position: running(<identifiant>), il peut ensuite être référencé par
un content: element(<identifiant>).
Indices :
CSS Generated Content for Paged Media Module
Section : "2. Running headers and footers"
http://www.w3.org/TR/css3-gcpm/#running-headers-and-footers 21
On utilise la balise title du head plutôt que de créer un autre élément portant
le titre, le head étant caché par la feuille de style par défaut, on force son
affichage dans une première règle : head {display: block;}
La mise en forme des blocs référencés de cette manière n'est pas facile, il ne
vaut mieux pas trop en abuser.
Question 9
Créer une table des matières.
Indices :
CSS Generated Content for Paged Media Module
Section : "3. Leaders"
http://www.w3.org/TR/css3-gcpm/#leaders22
La fonction leader('.') insère des points jusqu'à la fin de la ligne.
la fonction target-counter(attr(href), page) récupère la valeur du compteur
page tel qu'il est à l'élément pointé par l'attribut href.
NB : Cela ne fonctionne que pour le compteur page dans Flying Saucer.
3. Exercice
[2h]
Soit les fichiers DITA
Question 1
Écrire une transformation XSLT pour intégrer les différents fichiers DITA en un seul
fichier XML.
Indice :
Utiliser la fonction document() et l'instruction xsl:copy.
Principales instructions XSLT - p.28
Question 2
Écrire une transformation XSLT pour obtenir un PDF en utilisant XHTML+CSS et
20 - http://dev.w3.org/csswg/css3-page/#page-based-counters
21 - http://www.w3.org/TR/css3-gcpm/#running-headers-and-footers
22 - http://www.w3.org/TR/css3-gcpm/#leaders
Stéphane Crozat (Contributions : David Rivron)
Stéphane Crozat (Contributions : David Rivron)
16
16
Exercices
Flying Saucer.
Question 3
Écrire une transformation XSLT pour obtenir un PDF en utilisant XSL-FO et Oxygen.
Indice :
Stéphane Crozat (Contributions : David Rivron)
17
Solution des
exercices
> Solution n°1 (exercice p. 13)
Stéphane Crozat (Contributions : David Rivron)
19
Bibliographie
[Brillant07] ALEXANDRE BRILLANT, XML : Cours et exercices, Eyrolles, 2007 [ISBN 978-2212126914]
[Shea06] DAVE SHEA, MOLLY HOLZSCHLAG, Le Zen des CSS, Eyrolles, 2006.
Stéphane Crozat (Contributions : David Rivron)
21
Contenus annexes
- Structure générale XHTML
Syntaxe : Structure générale
1
2
3
4
5
6
7
8
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
...
</head>
<body>
...
</body>
</html>
Syntaxe : Entête
1
2
3
4
<head>
<title>...</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
Syntaxe : Corps
1
2
3
4
5
<body>
<h1>...</h1>
<h2>...</h2>
<p>...</p>
</body>
Complément

Tutoriel XHTML : http://fr.html.net/tutorials/html/23

Brillant07, pp107-108 [Brillant07]
- Balises de base XHTML
Syntaxe
1
2
3
4
<p>Un paragraphe de texte</p>
<p>Paragraphe contenant du texte, mot <b>gras</g> ou
<i>italique</i>.</p>
<p><a href="page02.html">Un lien</a> vers une autre page</p>
<img src="img.png" alt="une image"/>
23 - http://fr.html.net/tutorials/html/
Stéphane Crozat (Contributions : David Rivron)
23
Contenus annexes
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Contenus annexes
<h1>Titre de niveau 1</h1>
<h2>Titre de niveau 2</h2>
<h3>Titre de niveau 3</h3>
<table border="1">
<tr><th>Titre colonne 1</th><th>Titre colonne
2</th><th>...</th></tr>
<tr><td>Ligne 1 colonne 1</td><td>Ligne 1 colonne
2</td><td>...</td></tr>
<tr><td>Ligne 2 colonne 1</td><td>Ligne 2 colonne
2</td><td>...</td></tr>
</table>
<ul>
<li>Item de liste à puce</li>
<li>Item de liste à puce</li>
</ul>
<ol>
<li>Item de liste à ordonnée</li>
<li>Item de liste à ordonnée</li>
</ol>
Complément
Pour une description des balises de base : Brillant07, pp108-112 [Brillant07].
- Introduction à CSS
CSS (Cascading Style Sheets) est un standard du W3C qui complète HTML.
CSS sert à :

Mieux séparer méthodologiquement la structure (en HTML) de la mise en
forme (CSS)

Simplifier l'écriture HTML (et la génération HTML dans le cas de sites
dynamiques réalisés avec PHP par exemple)

Factoriser et réutiliser la mise en forme, notamment pour assurer
l'homogénéisation d'un site Web (externalisation des feuilles CSS)

Augmenter les possibilités de mise en forme du HTML (couches CSS)
Syntaxe : Association HTML et CSS
On peut associer à tout fichier HTML, dans le head, une ou plusieurs feuilles CSS
(qui se complètent "en cascade").
1
2
3
4
5
6
7
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF8" />
<title>...</title>
<link href='css/style1.css' type='text/css' rel='stylesheet'/>
<link href='css/style2.css' type='text/css' rel='stylesheet'/>
...
Syntaxe : Syntaxe CSS
Un fichier CSS permet d'associer une mise en forme aux éléments utilisés dans le
fichier HTML.
1
p { font-family:sans-serif;}
Stéphane Crozat (Contributions : David Rivron)
Stéphane Crozat (Contributions : David Rivron)
24
24
Contenus annexes
Méthode
: DIV et SPAN
On peut différencier les styles en fonction des attributs class et id des éléments
HTML.
On recours alors massivement aux éléments div et span pour le stylage, avec des
attributs id (pour référencer un élément particulier) et/ou class (pour référencer
un ensemble d'éléments de même type).
1
2
3
div.class { ... }
span.class { ... }
#id { ... }
Complément
Tutoriel CSS didactique et complet : http://fr.html.net/tutorials/css/24.
Pour une introduction à CSS : Brillant07, pp112-122 [Brillant07].
Zen Garden : http://www.csszengarden.com25 ; Le Zen des CSS [Shea06]
- Transformations XSLT
Méthode
: Associer une transformation XSLT à un fichier XML
Pour associer une XSLT à un fichier XML :
1. Ajouter la ligne standard avant l'élément racine :
<?xml-stylesheet href="adresse2.xsl" type="text/xsl"?>
Exemple
: Exemple de déclaration XSLT standard
Déclaration XSLT standard
24 - http://fr.html.net/tutorials/css/
25 - http://www.csszengarden.com/
Stéphane Crozat (Contributions : David Rivron)
25
Contenus annexes
Méthode
Contenus annexes
: Exécuter une transformation
Pour exécuter une transformation :
1. Cliquer sur
(ou Document > Document XML > Appliquer le scénario de transformation
ou CTRL+MAJ+T)
2. Répondre Oui à la proposition d'exécuter le scénario par défaut basé sur la
XSLT déclarée dans le fichier XML (lors de la première exécution seulement).
3. Le résultat de la transformation est présenté dans la fenêtre du bas.
Exemple
: Exemple de transformation
Transformation
Méthode
: Récupérer un résultat de transformation
Pour récupérer le résultat de la transformation :
1. Faire un clic droit sur la zone de résultat (zone du bas)
2. Choisir Enregistrer les résultat dans le menu contextuel
3. Enregistrer le fichier sur le disque dur (attention, l'extension n'est pas
ajoutée automatiquement, pensez à écrire fichier.html s'il s'agit d'un
fichier HTML)
4. Ouvrir ce fichier, par exemple dans un navigateur Web s'il s'agit d'un fichier
HTML
Complément
XSLT
: Déclarer et exécuter un scénario de transformation
Pour associer une transformation XSLT à un fichier XML, il est possible de créer
d'abord un "scénario de transformation" :

Document
>
Document
XML
>
Configurer
un
scénario
de
transformation

ou CTRL+MAJ+C

ou
Puis :
1.
2.
3.
4.
5.
Cliquer sur Nouveau
Donner un nom au scénario
Sélectionner le fichier XSLT sur le disque dur
Cliquer sur Accepter
Cliquer sur Accepter pour fermer la seconde fenêtre et associer le scénario
qui vient d'être créé au fichier XML en cours d'édition
Stéphane Crozat (Contributions : David Rivron)
Stéphane Crozat (Contributions : David Rivron)
26
26
Contenus annexes
Configurer un scénario
Créer un scénario
Une fois qu'un scénario de transformation est déclaré avec une XSLT, il peut être
associé à tout fichier XML :
1. Sélectionner le fichier XML que vous souhaitez associer au scénario
2. Choisir Document > Document XML > Configurer un scénario de
transformation
3. Sélectionner le scénario à appliquer au fichier XML dans la liste
4. Cliquer sur Accepter
Pour l’exécuter, procéder comme précédemment ( ).
Complément
: Tester une expression XPath
Exécution d'expression XPath dans l'éditeur Oxygen
- Principales instructions XSLT
Stéphane Crozat (Contributions : David Rivron)
27
Contenus annexes
Contenus annexes
Fondamental : Les deux instructions de base


<xsl:apply-templates
select="XPATH"/> : Relance les règles du
programme sur le sous-arbre pointé par le select (fondement de la
récursivité)
<xsl:value-of select="XPATH"/> : Génère le texte contenu dans le nœud
ou attribut pointé par le select
{XPATH} : Génère le texte contenu dans le nœud ou attribut pointé par le
XPath entre accolades (alternative à xsl:value-of à utiliser dans la
génération
d'attributs
exclusivement,
par
exemple
:
<img
src="{@URIsrc}">
Autres instructions courantes

<xsl:copy-of select="XPATH"/> : Génère le sous-arbre pointé par le
select

<xsl:if test="XPATH">...</xsl:if> : Ne s'exécute que si test est vrai

<xsl:for-each
select="XPATH">...</xsl:for-each> :
chaque sous-arbre renvoyé par le select
Complément
Exécute
pour
: Extension XPath "document()"
document(chemin-accès) où chemin d'accès permet d'accéder à un fichier sur le
disque.
Par exemple :

document("c:\monfichier.xml")//x : Tous les éléments x présents dans le
fichier monfichier.xml.

document(child::source)/* : La racine du document XML pointé par
l'expression XPath child::source.
Complément
: Déclaration explicite sur la cible

<xsl:element name="">contenu</xsl:element>

<xsl:attribute name="">valeur</xsl:attribute>

<xsl:text>chaîne de caractère</xsl:text
Complément
: Référence
http://fr.selfhtml.org/xml/representation/elementsxslt.htm 26
Complément
: Références synthétiques
https://developer.mozilla.org/fr/XSLT/Éléments 27
http://www.daniel-lemire.com/inf6450/mod3/xsltenbref.xhtml 28
http://personnel.univ-reunion.fr/fred/Enseignement/XML/intro-xslt.html 29
26 - http://fr.selfhtml.org/xml/representation/elementsxslt.htm
27 - https://developer.mozilla.org/fr/XSLT/%C3%89l%C3%A9ments
28 - http://www.daniel-lemire.com/inf6450/mod3/xsltenbref.xhtml
29 - http://personnel.univ-reunion.fr/fred/Enseignement/XML/intro-xslt.html
Stéphane Crozat (Contributions : David Rivron)
Stéphane Crozat (Contributions : David Rivron)
28
28