Transcript Formation
Les outils de base: Publication
avec XML
1.
2.
3.
4.
5.
XPATH
XSLT
XSLFO
XLink, XForms, RSS, …
XML et la bureautique
G. Gardarin
1. XPath : l'adressage XML
XPath
• Expressions de chemins dans un arbre XML
• Permet de sélectionner des nœuds par navigation
Document XML
?
XPath
III.2
G. Gardarin
XPath
XML Path Language
• recommandation W3C pour expressions de chemins
• acceptée le 16 novembre 1999
• version 2 en cours d'élaboration
Expressions de chemins communes à :
• XSL
• Xpointer (liens)
• XQuery (queries)
Xpath permet
• de rechercher un élément dans un document
• d'adresser toute sous partie d'un document
XPath
III.3
G. Gardarin
XPath - Parcours d'arbre
XPath opère sur l'arbre d'un document
racine
<livre auteur = "Hugo">
<titre>Les chatiments</titre>
<chapitre>
<section>Buonaparte </section>
Auteur = "Hugo"
<section>Neige</section>
</chapitre>
…
</livre>
livre
chapitre
titre
section
chapitre
section
Les chatiments
Bonaparte
XPath
III.4
Neige
G. Gardarin
XPath - Expression de chemins
Une expression de chemins spécifie une
traversée de l'arbre du document :
• depuis un nœud de départ
• vers un ensemble de nœuds cibles
• les cibles constituent la valeur du cheminement
Un chemin peut être :
• absolu
commence à la racine
/étape1/…/étapeN
• relatif
commence à un nœud courant
étape1/…/étapeN
XPath
III.5
G. Gardarin
Syntaxe et sémantique
Cheminement élémentaire
• direction::sélecteur [predicat]
Directions
• parent, ancestor, ancestor-or-self
• child, descendant, descendant-or-self
• preceding, preceding-sibling, following, following-sibling
• self, attribute, namespace
Sélecteur
• nom de nœud sélectionné (élément ou @attribut)
Prédicat
• [Fonction(nœud) = valeur]
XPath
III.6
G. Gardarin
XPath - Exemples
Sections d'un chapitre
• /child::livre/child::chapitre/child::section
• /livre/chapitre/section
Texte du chapitre 1 section 2
• /descendant::chapitre[position() = 1]
/child::section[position() = 2]/child::text()
• //chapitre[1]/section[2]/text()
XPath
III.7
G. Gardarin
XPath - Synthèse
Pattern
Exemple
Signification
Nom
Sélectionne les éléments de nom donné
section
Nom[0]
section[0] Sélectionne le premier élément ayant le nom donné
Nom[end()] section[end()] Sélectionne le dernier élément ayant un nom donné
|
Droite|Gauche Indique une alternative (un nœud OU bien l'autre (ou les deux))
/
Sélectionne le nœud racine d'une arborescence
/
/arbre/Nom /livre/chapitre Sélectionne les nœuds descendants par la balise de nom donné de l'arbre
*
Motif "joker" désignant n'importe quel élément
*
//
//personne Indique tous les descendants d'un nœud
.
Caractérise le nœud courant
.
Désigne le nœud parent. Permet de remonter d'un niveau dans
..
..
l'arborescence
Indique un attribut caractéristique (@nom désigne la valeur de l'attribut).
@
@nom
La notation @* désigne tous les attributs d'un élément
text()
Désigne le contenu d'un élément (le texte contenu entre ses balises)
text()
Sélectionne l'élément dont l'identifiant (la valeur de l'attribut ID) est celui
ID()
ID('a2546')
spécifié en paramètre
Comment() Comment() Désigne tous les nœuds commentaires
Node()
Désigne tous les noeuds
Node()
XPath
III.8
G. Gardarin
2. XSLT : la présentation
Permet de transformer un document
• régulier ou irrégulier
• de XML à XML, XHTML est un cas particulier
• De XML à présentation (HTML, texte, rtf, pdf, etc.)
Un document est un arbre
Le processeur XSL parcourt l'arbre et applique
les règles de transformations vérifiées (à
condition vraie) aux nœuds sélectionnés
Un document est produit en sortie
XSLT
III.9
G. Gardarin
Publications avec XSL
Plusieurs formats de publication pour un contenu
Format ( Postcript)
XML
Browser
Document
(XHTML, DHTML, HTML)
XSL
Processor
Format (XML)
pour Word,
Excel
XSL
Stylesheet
Format (XML)
application
e.Commerce
XSL permet la présentation sur des terminaux variés
format
(WML)
XSLT
III.10
G. Gardarin
Architectures
HTML
XML
Programme
XML
Fichier
XML
S
E
R
V
E
U
R
Affichage
ASP
ou
JSP
Processeur
XSL
HTML
Affichage
XML
Processeur
XSL
•Affichage
Base de données
•Traitement
XSLT
III.11
G. Gardarin
Les feuilles de style
Une feuille de style XSL
• est un document XML de racine <xsl:stylesheet>
• contient une liste de règles de transformation
<xsl:template>
Chaque règle (<xsl:template>) précise:
• Une condition spécifiant le sous-arbre du document
d’entrée auquel elle s’applique (match=)
• Une production spécifiant le résultat de l’application
de la règle (contenu)
Il s'agit de règles de production classiques
• If <condtition> then <production>
• Codées en XML avec espace de nom xsl:
XSLT
III.12
G. Gardarin
Exemple de document
<?xml version="1.0" ?>
<Guide>
<Restaurant Categorie="**">
<Nom>Le Romantique</Nom>
<Adresse>
<Ville>Cabourg</Ville>
<Dept>Calvados</Dept>
</Adresse>
</Restaurant>
<Restaurant Categorie="***">
<Nom>Les TroisGros</Nom>
<Adresse>
<Ville>Roanne</Ville>
<Dept>Loire</Dept>
</Adresse>
</Restaurant>
</Guide>
XSLT
III.13
G. Gardarin
Exemple de feuille de style XSL
<?xml version="1.0" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/xsl">
<xsl:template match="/">
<html><head><B>ESSAI XSL</B></head>
<body><xsl:apply-templates/></body></html>
</xsl:template>
<xsl:template match="Guide">
<H1>BONJOUR LE GROUPE XML</H1>
<H2>SUIVEZ LE GUIDE</H2>
<xsl:apply-templates />
</xsl:template>
<xsl:template match="Restaurant">
<P> <I>Restaurant :</I>
<xsl:value-of select="Nom"/></P>
</xsl:template>
</xsl:stylesheet>
XSLT
III.14
G. Gardarin
Les règles de production
Définition des règles par <xsl:template …>
Attributs
• match: condition de sélection des nœuds sur lesquels la règle
s'applique (XPath)
• name: nom de la règle, pour invocation explicite (en conjonction
avec <call-template>)
• mode: permet d'appliquer à un même élément des règles
différentes en fonction du contexte
• priority: priorité, utilisé en cas de conflit entre deux règles ayant
la même condition
Exemples
• <xsl: template match="/">
• <xsl: template match="auteur" name="R1" pririty="1">
XSLT
III.15
G. Gardarin
La génération du résultat
Le contenu de l'élément <xsl:template> est la
production de la règle:
• Les éléments du namespace xsl sont des instructions qui copient
des données du document source dans le résultat
• Les autres éléments sont inclus tels quels dans le résultat
Instructions pour:
• Parcourir l'arbre du document source
• Copier le contenu du document source dans le résultat
Parcours de l'arbre:
• <xsl:apply-templates>, <xsl:for-each>
Copie du contenu du nœud sélectionné:
• <xsl:value-of select= … >
XSLT
III.16
G. Gardarin
Résumé des commandes
<xsl:template>, définir une règle et son contexte
<xsl:apply-templates />, appliquer les transformations aux enfants du
nœud courant
<xsl:value-of select … />, extrait la valeur d'un élément sélectionné à partir
du nœud courant
<xsl:for-each>, définir un traitement itératif
<xsl:pi>, générer une processing instruction
<xsl:element>, générer un élément
<xsl:attribute>, générer un attribut
<xsl:if>, définir un traitement conditionnel
XSLT
III.17
G. Gardarin
Processeurs XSLT
Processeurs XSLT conformes à la spécification:
•
•
•
•
•
•
Apache Group (www.apache.org): Xalan
Oracle XDK (www.oracle.com): XML Parser/ XSL Proc.
MSXML .NET
James Clark (www.jclark.com): XT
Saxon
libXML, libXSLT (Unix C)
Browser
• Microsoft MSXML et IE 5 ou plus
• Netscape supporte XSLT depuis la V6
• Firefox Mozilla
Editeur et debugger
•
•
•
•
XSLT
Style Vision de Altova
Oxygen de Synchro
Stylus Studio de Data Direct
CookTop et Tidy (gratuit)
III.18
G. Gardarin
Quelques éditeurs
- IBM XSL Editor version: 1.0
preview release 2
platforms: Java
license: Free
developer: Alphaworks,
revised: 21
IBM
jan 2000
Editeur multi-frame et outils de mise au point – Alphawork d'IBM
- Stylus S tudio version: 4.6
platforms: Windows
NT/2000
license: Commercial; 30 day evaluation available.
developer: Excelon Corporation
revised: 06 mar 2003
Editeur de Excelon (Progress); creation XSL et mise au point
- XMLTransform version: 1.1.0
platforms: Java
license: Commercial;
free evaluation version available
Software Inc.
revised: 22 feb 2002
developer: TIBCO
Editeur de Tibco pour les transformations XSL à XSL
XSLT
III.19
G. Gardarin
IBM XSL Editor
XML
XSLT
XSLT
III.20
Rendu
G. Gardarin
Bilan XSLT
XSLT est un langage très puissant de
transformation d'un arbre XML en un autre
XSLT permet en particulier de publier des
données XML sur le Web par transformation en
un document HTML standard
XSLT est très utilisé :
• Pour publier des contenus XML
• Pour transformer des formats (EAI, B2B)
XSLT
III.21
G. Gardarin
3. XSL-FO : le formatage
Permet les mises en
pages sophistiquées
Objets de mise en forme
applicables aux résultats
avec XSLT
Distinction
• Formatage des pages
• Formatage des objets à
l'intérieur des pages
Statiques
Dynamiques
XSL-FO
III.22
G. Gardarin
Principes
Peut s'appliquer aux résultats des feuilles XSLT
XSL-FO
III.23
G. Gardarin
Organisation du document
Un document FO est formé d'un élément fo:root
qui comprend deux parties distinctes
• une description des modèles de pages
fo:layout-master-set
• une description du contenu
fo:page-sequence
Le contenu comporte :
• Des flux contenant les données mêmes du document
• Des éléments statiques dont le contenu se répète sur
les pages (en-têtes courants, no de page, etc.)
XSL-FO
III.24
G. Gardarin
Objets de formatage
Les objets de formatage sont multiples :
• <fo:block>
utilisé pour les blocs de textes, paragraphes, titres…
• <fo:display-rule>
ligne de séparation
• <fo:external-graphic>
zone rectangulaire contenant un graphisme (SVG)
Ils possèdent de nombreuses propriétés
• Pour un block on peut définir
la marge gauche et droite
l’espace avant et après le paragraphe
la couleur du texte ………...
XSL-FO
III.25
G. Gardarin
Fonctionnalités
XSL-FO
Pages portrait ou paysage
Pages recto-verso
Page de tailles variées
Marges multiples
Colonnes multiples
Entête et pieds de page
Caractères unicode
Formatage multi-langages
Tables des matières
générées
Multiple directions
d'écritures
Numérotation des pages
Graphiques et SVG
Tables, avec entêtes,
lignes et colonnes
fusionnables
Listes
Zones flottantes
Tris à l'édition
Notes de bas de pages
III.26
G. Gardarin
XSL-FO: hello World
<?xml version="1.0" encoding="iso-88591"?>
<fo:root
xmlns:fo="http://www.w3.org/1999/X
SL/Format">
<fo:layout-master-set>
<fo:simple-page-master mastername="my-page">
<fo:region-body margin="2 cm"/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence masterreference="my-page">
<fo:flow flow-name="xsl-regionbody">
<fo:block>Hello, world!</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
XSL-FO
Element Root
•
Permet de définir le namespace XSL-FO
Layout master set
•
Page sequence
•
Permet de déclarer une ou plusieurs
page masters (masque) et page
sequence masters pour définir la
structure des pages (ici une de 2 cm
de marges)
Les pages sont groupées en séquences
et structurées selon la référence au
masque.
Flow
•
C'est le container du texte utilisateur
dans le document. Le nom du flot lit le
texte à une zone de la page définie
dans le masque.
Block
•
III.27
C'est le bloc de formatage qui inclut un
paragraphe de texte pouvant être
produit pas XSLT.
G. Gardarin
XSL-FO et XSLT : Exemple
Définition de propriétés pour la racine
• <xsl:template match=‘/’>
<fo-display-sequence
font-style=‘italic’
start-indent=‘4pt’
end-indent=‘4pt’
font-size=‘18pt’
<xsl:apply-templates/>
</fo-display-sequence>
</xsl:template
La définition d’une propriété locale est
prioritaire devant l’héritage
XSL-FO
III.28
G. Gardarin
Les processeurs XSL-FO
Apache Group : FOP
• Formating Object Processor
• Génère du PDF http://www.apache.org
JFOR (Open Source)
• Génère du RTF http://www.jfor.org
Antenna House
• XSL Formatter http://www.antennahouse.com
RenderX
• Génère du PDF http://www.renderx.com
Altova
• StyleVision
http://www.altova.com/products_xsl.html
XML Mind FO Converter
• Génère du RTF http://www.xmlmind.com/foconverter
Autres
• Arbortext, Adobe, Scriptura, XMLPDF, APOC, XSL-FO to TeX
XSL-FO
III.29
G. Gardarin
Bilan XSL
XML = format pour la
production de publications
échangeables sur le web :
Questions ?
• production d’une source unique
en XML ;
• XSLT = génération
automatique de présentations
multiples ;
• XSL-FO = génération de
présentations soignées avec
pages maîtres et blocs
formatés.
XSL
III.30
G. Gardarin
4. Autres spécifications
XLink = liens externes entre documents
XPointer = pointeurs internes à un document
XForms = saisie de formulaires avec XML
RSS = format pour la syndication de contenus
XLink et plus
III.31
G. Gardarin
Xlink et les liens
Exprimer des liens entre documents XML
• pointe sur une URL
• l'URL peut inclure une partie Xpointer
• tout élément peut être un lien
Différents types de liens
•
•
•
•
•
•
simple xlink:type = "simple"
étendu xlink:type = "extended"
De véritables associations
1-1 en simple, k-n en étendu
avec rôles possibles
avec comportements possibles
XLink et plus
III.32
G. Gardarin
Exemples simples
<Annotation xlink:type="simple"
href="note1.xml">1</Annotation>
<Auteur xlink:type="simple" title="Créateur"
href="http://www.mysite.com/~georges/">
Victor Hugo</Auteur>
<Image xlink:type="simple" href="logo.gif"/>
Les attributs doivent être définis dans la DTD
• si le document en possède une …
XLink et plus
III.33
G. Gardarin
Les liens étendus
Associations orientées de
M vers N
• Permettent de relier des
éléments entre eux par des
arcs étiquetés et ainsi de
composer des graphes
étiquetés orientés
• Éléments ressource et
locator définissant les
nœuds
• Éléments arc définissant
les liens
XLink et plus
Ressource
• <xxx xlink:type="resource"
label="..." title="..."
role="...">contenu de
l'élément</xxx>
Locator
• <xxx xlink:type="locator"
label="…" title="…"
role="…" href="…" />
Arc
• <xxx xlink:type="arc"
from="…" to="…"
show="…" actuate="…"
title="…"
arcrole="…">contenu</xxx
>
III.34
G. Gardarin
Les attributs de XLink
xlink:type
actuate
• type de lien
href
• manuel ou automatique
label
• référence de l'URL
title
• étiquette des arcs
from
• titre du document cible
role
• source de l'arc
to
• rôle du document cible
• cible de l'arc
show
• en place, interne ou
nouveau document
XLink et plus
III.35
G. Gardarin
XPointer
Permet de référencer un élément particulier d'un
document
• le document est spécifié par Xlink
• le Xpointer est ajouté à l'URI séparée par # ou |
Pointeur absolue
• id() : référence un élément d'identifiant donné
• root() : pointe sur la racine d'un document
• html() : référence un document HTML
Pointeur relatif = XPath
• child, descendant, ancestor, preceding, following, …
• Exemple : <vin2 xlink:type="simple" href="http://www.site.fr/
degustation#xptr(/child::degustation/child::vin[2])"
XLink et plus
III.36
G. Gardarin
XForms
Nouvelle génération de formulaires Web
Assemblage de formulaires à partir de schéma
• Schéma = structure + type
• Contraintes = Dépendances, expressions et calculs
XForms User Interfaces est la partie apparente
pour l’utilisateur (présentation)
• XForms User Interfaces intègre des boites
symboliques à label
• Peut être réalisée en XHTML, WML, …
• Ajoute en plus des contrôles spécifiques au niveau
présentation.
XForms
III.37
G. Gardarin
Saisie des formulaires
Génération et contrôle du message XML
Contrôle sur le client ou le serveur
XForms
User
Interface
XForms
Model
XForms Submit Protocol
XForms
III.38
G. Gardarin
La syndication de contenus
RSS (Really Simply Syndication)
• méthode simple et efficace pour accéder aux
meilleures sources d'information sur le web.
• permet aux sites Internet et aux blogs de proposer
leur contenu de manière simplifiée.
• La plupart des grands sites d'information proposent
leur contenu en RSS (ex: Libération, Actustar, …)
• Lu et présenté par un agrégateur RSS (e.g., Yahoo)
RSS
III.39
G. Gardarin
Que gagne-t-on à utiliser RSS ?
Il y a de nombreux avantages à accéder ainsi à
l'information :
• l'efficacité -- les toutes dernières infos sont
automatiquement rassemblées au même endroit
• la variété -- les titres concernant les sujets qui vous
intéressent sont mis en évidence
• la clarté -- les titres peuvent être affichés en fonction
de leur importance et/ou en commençant par le plus
récent
• l'ordre -- les lettres d'information par email et les
favoris négligés peuvent vite devenir encombrants !
RSS
III.40
G. Gardarin
Exemple RSS
XForms
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title>XML.com</title>
<link>http://www.xml.com/</link>
<description>XML.com features a rich mix of information and services for the XML
community.</description>
<language>en-us</language>
<item>
<title>The .NET Schema Object Model</title>
<link>http://www.xml.com/pub/a/2002/12/04/som.html</link>
<description>Priya Lakshminarayanan describes in detail the use of the .NET Schema Object
Model for programmatic manipulation of W3C XML Schemas.</description>
<dc:creator>Priya Lakshminarayanan</dc:creator>
<dc:date>2002-12-04</dc:date>
</item>
<item>
<title>SVG's Past and Promising Future</title>
<link>http://www.xml.com/pub/a/2002/12/04/svg.html</link>
<description>In this month's SVG column, Antoine Quint looks back at SVG's journey through
2002 and looks forward to 2003.</description>
<dc:creator>Antoine Quint</dc:creator>
<dc:date>2002-12-04</dc:date>
</item>
</channel>
</rss>
III.41
G. Gardarin
5. Intégration à la bureautique
Stockage
• Format des fichiers : XML devient possible
• Compatibilité avec l'existant
Feuilles de styles
• Modèle d'import et d'export
Des jargons spéciaux
• Word ML
• Open Document ML
Bureautique
III.42
G. Gardarin
Intégration à Office
Word
• Format XML spécifique WordML, couvre le format .doc
• Professional inclut le support XSLT et la possibilité de créer des schémas
utilisateur
• Possibilité d'importer et exporter du XML "pur" par application de
feuilles de style XSLT
Excel
• Format XML spécifique
• Importation et exportation de document XML
• Support des Web Services
InfoPath
• Nouvel outil Office produisant du XML
• Construction de formulaires interactifs
FrontPage
• Outils pour générer HTML avec XSLT
Bureautique
III.43
G. Gardarin
Intégration à Open Office
www.openoffice.org
• Suite bureautique Open Source
• Initialement développée par SUN
Format natif XML
•
•
•
•
Définit comme un "standard" Oasis
Le XML est zippé sur disque
Peut référencer du binaire (images, etc.)
http://xml.openoffice.org
Support de formulaire XForms
Bureautique
III.44
G. Gardarin