STAF 2X XSL/FO

Download Report

Transcript STAF 2X XSL/FO

STAF 2X XSL/FO
Glaus & Ruckstuhl
Mars 2002
Programme du 18 et 19 mars







Revision XML
Introduction à XSL/FO (intérêts et applications)
Théorie sur le langage XSL/FO
Utilisation FOP
Pratique du langage XSL/FO
Installation de logiciels
Travaux pratiques
© Glaus & Ruckstuhl TECFA 2002
2
REVISION XML
XML : introduction
 Né : fin 96
 Père : W3C
 Petit-fils de SGML (ISO-1986)
 Cousin d’HTML
 Reconnu le : 10/02/98 – version 1.0
 Descendance – XHMTL, MathML, …
© Glaus & Ruckstuhl TECFA 2002
4
XML : introduction (2)
 Extensible Markup Language
 Méta-langage qui permet de créer et de
formater ses propres balises de document
 XSL : Extensible Stylesheet Language,
permet aux documents d’être toujours
formatés de la même manière
 DTD
© Glaus & Ruckstuhl TECFA 2002
5
X comme eXtensible
 HTML : nombre fini de balises
 XML : possibilité de définir les balises
 HTML : balises pour formater
 XML : balises pour structurer
 DTD ou Schéma pour définir les balises
© Glaus & Ruckstuhl TECFA 2002
6
M comme Markup
 Tous les éléments sont repérés au moyen de
balises
 Les balises servent à structurer le document
© Glaus & Ruckstuhl TECFA 2002
7
L comme Language
 Langage de description de documents
 Règles à respecter
© Glaus & Ruckstuhl TECFA 2002
8
Règles syntaxiques
1.
2.
3.
4.
5.
6.
7.
8.
Commencer par une déclaration XML
Balisage sensible à la casse
La valeur des attributs doit être quotée
Balises non vides appariées
<br></br>
Balises vides fermées
<br/>
Les élèments ne doivent pas se chevaucher
<jour> <mois> </jour> </mois> interdit
Un élément doit encapsuler tous les autres
Ne pas utiliser les caractères < et & seuls
© Glaus & Ruckstuhl TECFA 2002
9
XML bien formé
 Le document doit soit utiliser un DTD, soit contenir une
déclaration XML dont l’attribut standalone est fixé à « no »;
<?xml version=+1.0 » standalone=« no »?>
 Toutes les valeurs associées aux attributs d’un élément
doivent être entre guillemets;
 Un élément doit avoir une balise ouvrante et une balise
fermante, à moins qu’il s’agisse d’un élément vide;
 Si une balise est un élément vide autonome, il doit contenir
une barre oblique fermante (/) avant la fin de la balise;
 Toutes les balises ouvrantes et fermantes doivent être
emboîtées correctement;
© Glaus & Ruckstuhl TECFA 2002
10
XML bien formé (2)
 Les caractères de balisage isolés ne sont pas autorisés au
sein du texte: > ou & doivent être représentés sous la forme
de références d’entités. De plus, la séquence ]]> doit être
exprimée sous la forme ]]&gt; si elle est utilisée en texte
naturel;
 Les documents XML bien formés sans DTD associé ont par
défaut des attributs de type CDATA.
© Glaus & Ruckstuhl TECFA 2002
11
Exemple XML
<?xml version="1.0" Encoding= "ISO-8859-1" ? >
<rapport langue="fr">
<auteur>Glaus & Ruckstuhl</auteur>
<titre>XSL/FO</titre>
<date>12/03/2002</date>
<commentaire> Livraison confirmée
<jour>18/03</jour>
<heure>09H00</heure>
<lieu> GENEVE</lieu>
</commentaire>
</rapport>
© Glaus & Ruckstuhl TECFA 2002
12
DTD : Document Type
Definition
 Permet de définir le « vocabulaire » et la
structure qui seront utilisés dans le document
XML;
 Grammaire du langage dont les phrases sont
des documents XML (instances);
 Peut être mise dans un fichier et être appelé
dans le document XML.
© Glaus & Ruckstuhl TECFA 2002
13
DTD : élément et attribut
 !ELEMENT tag (contenu)
 Décrit une balise qui fera partie du vocabulaire
 Ex : <!ELEMENT livre (auteur, editeur)>
 !ATTLIST tag [attribut type #mode [valeur]]
 Définit la liste des attributs pour une balise
 Ex : <!ATTLIST auteur
genre CDATA #REQUIRED
ville CDATA #IMPLIED>
<!ATTLIST editeur
ville CDATA #FIXED "Geneve">
© Glaus & Ruckstuhl TECFA 2002
14
DTD : opérateurs d’occurence
 Notations
 Exemples

(a, b) séquence

(nom, prenom, rue, ville)

(a|b) liste de choix

(oui|non)

a? élément optionnel [0,1]

(nom, prenom?, rue, ville)

a* élément répétitif [0,N]

(produit*, client)

a+ élément répétitif [1,N]

(produit*, vendeur+)
© Glaus & Ruckstuhl TECFA 2002
15
Types de données des attributs
DTD
CDATA
Donnée composée de caractères
Enumération
Une série de valeurs dont on ne peut en choisir qu’une
ENTITY
Une entité déclarée dans le DTD
ENTITIES
Entités multiples séparées par des espaces blanc et déclarées dans
le DTD
ID
Un identificateur d’élément unique
IDREF
Valeur d’un attribut de type ID unique
IDREFS
IDREF multiples associés à des éléments NMTOKEN
NMTOKEN
Une marque associée à un nom XML
NMTOKENS
Des marques associées à des noms XML multiples séparées par
des espaces blancs
NOTATION
Une notation déclarée dans le DTD
© Glaus & Ruckstuhl TECFA 2002
16
Modificateurs par défaut pour
les attributs DTD
#REQUIRED La valeur de l’attribut doit être spécifiée avec l’élément
#IMPLIED
La valeur de l’attribut peut ne pas être spécifiée
#FIXED
La valeur de l’attribut est fixée et ne peut être modifiée par
l’utilisateur
© Glaus & Ruckstuhl TECFA 2002
17
Exemple DTD
<?xml version="1.0" Encoding= "ISO-8859-1" ? >
<!DOCTYPE memo [
<!ELEMENT memo (to, from, date, body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT date (#PCDATA)>
<!ELEMENT body (#PCDATA|jour|heure|lieu)>
<!ELEMENT jour (#PCDATA)>
<!ELEMENT heure (#PCDATA)>
<!ELEMENT lieu (#PCDATA)>
<!ATTLIST memo langue CDATA "Alsacien">
<!ATTLIST memo urgence CDATA "normal">
]>
© Glaus & Ruckstuhl TECFA 2002
18
XSL : Extensible Stylesheet
Language
 XSL consiste à appliquer à chaque document
XML rencontré des règles de formatage
d’éléments que vous definissez;
 Séparation de données et de la présentation
© Glaus & Ruckstuhl TECFA 2002
19
XSL : formatage général
 Toutes les feuilles de style XSL doivent correspondre à des
documents XML bien formés et chaque élément XSL doit
utiliser l’espace de désignation xsl:
 Toutes les feuilles de style XSL doivent débuter avec la
balise <xsl:stylesheet> représentant l’élément racine XSL et
se terminer avec la balise correspondante </xsl:stylesheet>
 Au sein de la balise ouvrante, l’espace de désignantion doit
être défini:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
© Glaus & Ruckstuhl TECFA 2002
20
Eléments XSL
<xsl:applytemplates>
Indique que les fils directs de l’élément source devraient
être traités de manière additionnelle
<xsl:template>
Localise différents éléments à partir desquels les règles de
la feuille de style peuvent être appliquées
<xsl:value-of>
Extrait une valeur spécifique de l’arbre source
<xsl:for-each>
Permet de sélectionner un nombre quelconque de frères
identiques dans un document XML
<xsl:attribute>
Ajoute un attribut possèdant le nom spécifié à un élément
de l’arbre cible <xsl:attribute>
<xsl:comment>
Insère un commentaire dans le document XML
© Glaus & Ruckstuhl TECFA 2002
21
Exemple XSL
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="programme">
<xsl:processing-instruction name="cocoonformat">type="text/html"</xsl:processing-instruction>
<HTML>
<HEAD>
<TITLE><xsl:value-of select="entete" /></TITLE>
</HEAD>
<BODY bgcolor="#FFFFFF">
<xsl:apply-templates />
</BODY>
</HTML>
</xsl:template>
<xsl:template match="cours">
<BR><BR><center><font color="black" size="14pt" face="comic sans ms,
verdana"><xsl:value-of select="titre" /></font></center></BR></BR>
</xsl:template>
</xsl:stylesheet>
© Glaus & Ruckstuhl TECFA 2002
22