61
Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

Embed Size (px)

Citation preview

Page 1: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

Les outils de base : XPath, XSL, XLink, XForms

1. XPATH2. XSLT3. XSLFO4. XLink5. XForms6. Conclusion

Page 2: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.2

1. XPath : l'adressage XML

XPath Expressions de chemins dans un arbre XML Permet de sélectionner des nœuds par

navigation

XPath

Document XML

?

Page 3: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.3

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

Page 4: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.4

XPath - Parcours d'arbre

XPath opère sur l'arbre d'un document<livre auteur = "Hugo"> <titre>Les chatiments</titre> <chapitre> <section>Buonaparte </section> <section>Neige</section> </chapitre> …</livre>

racine

section

Auteur = "Hugo"

livre

Buonaparte

chapitre

Neige

chapitre

sectionLes chatiments

titre

XPath

Page 5: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.5

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

Page 6: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.6

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

Page 7: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.7

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

Page 8: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.8

XPath - Synthèse

Pattern Exemple Signification Nom section Sélectionne les éléments de nom donné 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

@ @nom Indique un attribut caractéristique (@nom désigne la valeur de l'attribut). La notation @* désigne tous les attributs d'un élément

text() text() Désigne le contenu d'un élément (le texte contenu entre ses balises)

ID() ID('a2546') Sélectionne l'élément dont l'identifiant (la valeur de l'attribut ID) est celui spécifié en paramètre

Comment() Comment() Désigne tous les nœuds commentaires Node() Node() Désigne tous les noeuds

XPath

Page 9: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.9

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 autre arbre est produit en sortie

XSLT

Page 10: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.10

Publications avec XSL

Plusieurs formats de publication d’un même jeu de données

Il permet la présentation sur des terminaux variés

XSLProcessor

XMLDocument

Format ( PDF)

Format (XML) application

e.Commerce

format (WML)

Browser Netscape/IE

(XHTML, DHTML, HTML)

Format (XML) pour Word,

Excel

XSLStylesheet

XSL

Page 11: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.11

Architectures

Fichier

Base de données

Affichage

•Affichage•Traitement

SERVEUR

XML

XML

Programme

XMLASPouJSP

XSL

Processeur XSL

Affichage

HTML

HTML

XML

Processeur XSL

Page 12: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.12

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>) est définie par: Une condition spécifiant le sous-arbre du

document d’entrée auquel elle s’applique Une production spécifiant le résultat de

l’application de la règle

Utilisation d'un nom de domaine spécifique Le préfixe généralement utilisé est xsl:

XSLT

Page 13: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.13

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

Page 14: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.14

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

Page 15: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.15

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">

XSLT

Page 16: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.16

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

Page 17: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.17

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

Page 18: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.18

Quelques éditeurs- IBM XSL Ed i to r -

version: 1.0 preview release 2 platforms: J ava

license: Free developer: Alphaworks, IBM

revised: 21 jan 2000

Editeur multi-frame et outils de mise au point – Alphawork d'IBM - S tylus 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 - XMLTransfo rm -

version: 1.1.0 platforms: J ava

license: Commercial; free evaluation version available developer: TIBCO Software Inc.

revised: 22 feb 2002

Editeur de Tibco pour les transformations XSL à XSL

XSLT

Page 19: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.19

IBM XSL Editor

XML XSLT Rendu

XSLT

Page 20: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.20

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 utilisé : Pour publier des contenus XML Pour transformer des données (EAI, B2B)

XSLT

Page 21: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.21

3. XSLFO : le formatage

Les Objets de mise en forme sont multiples :

<fo:block> utilisé pour les paragraphes, les titres…

<fo:display-rule> ligne de séparation

<fo:display-graphic> zone rectangulaire contenant graphisme

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 ………...

XSLFO

Page 22: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.22

XSLFO : principes

Ils sont appliqués à un nœud de l ’arbre résultat

Ils sont appelés par l ’espace nominale fo

Syntaxe :<xsl:template match="[motif xpath]" >

<fo :[objet-de mise en forme]

([propriété-style]="[valeur]")+>

[instructions-de-traitement]

</fo:[objet de mise-en-forme]>

</xsl:template>

XSLFO

Page 23: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.23

XSLFO : Exemple

Définition de propriétés pour la racine <xsl:template match=‘/’>

<fo-display-sequencefont-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é en locale est prioritaire devant l’héritage

XSLFO

Page 24: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.24

Les outils XSL

Processeurs XSLT conformes à la spécification: Apache Group (www.apache.org): Xalan 1.0.1 Oracle XDK (www.oracle.com): XML Parser 2.0.2 James Clark (www.jclark.com): XT Microsoft Internet Explorer 5.0 et plus Netscape 6 supporte XSLT

Processeur XSLFO 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

XSL

Page 25: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.25

Bilan XSL

XML = SGML léger pour la production de publications web importantes :

production d’une source unique en XML ;

XSLT = génération automatique de présentations web multiples ;

XSLFO = génération automatique sur d’autres supports.

Questions ?

XSL

Page 26: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.26

4. Autres spécifications

XLink = liens externes entre documents

XPointer = pointeurs internes à un document

XForms = saisie de formulaires avec XML

XLink et plus

Page 27: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.27

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

Page 28: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.28

Exemples simples

<Annotation xlink:type="simple" href="note1.xml"> 1 </Annotation>

<Auteur xlink:type="simple" inline="true" href="http://www.e-xmlmedia.com/~georges/"> Georges Gardarin </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

Page 29: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.29

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

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>

XLink et plus

Page 30: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.30

Les attributs de XLink

xlink:type type de lien

href référence de l'URL

title titre du document cible

role rôle du document cible

show en place, interne ou

nouveau document

actuate manuel ou automatique

label étiquette des arcs

from source de l'arc

to cible de l'arc

XLink et plus

Page 31: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.31

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

Page 32: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.32

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 toutes les

commandes de XHTML Ajoute en plus des contrôles (tags) spécifiques

au niveau présentation.

XForms

Page 33: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.33

Saisie des formulaires

Génération et contrôle du message XML Contrôle sur le client ou le serveur

XForms Model

XFormsUser

Interface

<XML>Instance

data

XForms Submit Protocol

XForms

Page 34: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.34

5. Conclusion

XSL pour transformer et présenter puissant mais complexe problème de performance des processeurs ?

Recommandation XSL version 1.0 http://www.w3.org/TR/xsl/

Recommandation XPath version 1.0 http://www.w3.org/TR/xpath

Recommandation Xlink version 1.0 http://www.w3.org/TR/xlink

Références

Page 35: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.35

Page 36: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.36

EXERCICES ET COMPLEMENTS

Modèle des documents en entrée Modèle des documents en sortie Structure d’une feuille de style Mise en œuvre des transformations

Page 37: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.37

Modèle de document en entrée

Le document transformé doit être un document XML bien formé Document XML: arbre dont les nœuds sont les éléments

et leur contenu (texte) Pour XSL, la racine du document, les attributs, les

namespaces, les instructions de traitement et les commentaires sont aussi vus comme des nœuds

Types de nœuds traités par XSL: Racine du document (différent de l’élément racine!) Éléments Texte Attributs Namespaces Instructions de traitement Commentaires

Page 38: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.38

Exemple de document XML

<?xml version="1.0" encoding="iso-8859-1"?><?xml-stylesheet href="style1.xsl" type="text/xsl"?>

<CATALOGUE> <ARTICLE> <REFERENCE>JT3006</REFERENCE> <PRIX UNIT="FFR" TAX="TTC">1874</PRIX> </ARTICLE> <ARTICLE> … </ARTICLE></CATALOGUE>

Page 39: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.39

Arbre correspondant

Les attributs apparaissent comme des fils de l’élément auquel ils s’appliquent

Racine

Catalogue

Article

ReferencePrix

Tax="TTC"

Prix="FFR" 1874 JT3006

Article

<?xml-stylesheet href="style1.xsl" type="text/xsl"?>

Page 40: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.40

Modèle de document en sortie

En général, le document produit est un document XML Document complet Fragment de document bien formé

La norme prévoit deux autres types de documents produits: Un type HTML, qui permet de transformer le HTML bien

formé (ex: <BR/>) en HTML standard (ex: <BR>) Un type texte, qui permet de générer des formats non

balisés de type RTF, Postscript, TeX.

Le type de format de sortie est contrôlé par l’élément xsl:output

Page 41: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.41

Structure d’une feuille XSL

Une feuille de style XSL contient une liste de règles de transformation

Chaque règle (template) est définie par: Une condition spécifiant le sous-arbre du document

d’entrée auquel elle s’applique Une production spécifiant le résultat de l’application de

la règle

XSL utilise XML pour décrire les règles de transformation: <xsl:stylesheet> est l’élément racine d’une feuille de

style XSL Toutes les instructions XSL sont des éléments du

namespace "http://www.w3.org/1999/XSL/Transform" Le préfixe généralement utilisé est xsl

Page 42: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.42

Exemple de feuille de style

<?xml version="1.0"?><xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="CATALOGUE"> <html> <xsl:apply-templates/>

</html> </xsl:template>

<xsl:template match="ARTICLE"> <P> <xsl:apply-templates/> </P> </xsl:template>

</xsl:stylesheet>

Style1.xsl

Page 43: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.43

Que fait l'exemple?

La première règle: Remplace l'élément racine <CATALOGUE> par

l'élément <html> Le contenu de <html> est le résultat de la

transformation du contenu de <CATALOGUE> par les autres règles de la feuille de style

La seconde règle: Remplace chaque élément <ARTICLE> par un

élément <P> Le contenu de <P> est le texte (sans les

balises) contenu dans les descendants de l'élément <ARTICLE> (règle par défaut)

Page 44: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.44

Mise en œuvre

Trois types de mise en œuvre possible: Transformation statique Transformation dynamique sur le serveur Web Transformation dynamique sur le client

Le choix de l'approche dépend: De l'utilisation des documents produits

(impression papier, publication Web) Du type de données XML manipulées (statique

ou dynamique) Des capacités du serveur Web utilisé Des capacités du client Web utilisé

Page 45: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.45

Architectures

Fichier

Base de données

Affichage

•Traitement•Affichage

SERVEUR

XML

XML

Programme XMLASPouJSP

Processeur XSL

Affichage

HTML

HTML

XMLProcesseur

XSL

WMLPSPDF

Processeur XSL

XML HTML

Page 46: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.46

Transformation statique

Les documents XML sont transformés à l'avance: Impression papier Stockage HTML sur un site Web standard

Avantages: Pas de problèmes de performance Serveur et client Web standards

Inconvénients Impossibilité de gérer des données XML

dynamiques Cohérence entre source et résultat

Page 47: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.47

Transformation sur le serveur

Les documents XML sont transformés à la demande par le serveur: Publication Web en HTML Échanges inter-application

Avantages: Permet de gérer des données XML dynamiques Client Web standard (HTML)

Inconvénients: Nécessite un serveur compatible XSL Problèmes de performances sur le serveur

Page 48: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.48

Transformation sur le client

Le document XML et la feuille XSL sont transmises par le serveur avant transformation: Publication Web

Avantages: Permet de gérer des données dynamiques Serveur Web standard Pas de problèmes de performances sur le

serveur

Inconvénients: Nécessite un client Web compatible XSL Les données XML ne sont pas filtrées avant envoi

Page 49: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.49

Association document-feuille XSL

Transformation statique: Le document XML et la feuille XSL sont deux

paramètres du programme de transformation

Transformation dynamique: L'association est gérée par une instruction de

traitement dans le fichier XML <?xml-stylesheet href="style1.xsl" type="text/xsl"?>

Page 50: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.50

LES RÈGLES XSL

Définition d'une règle La génération du résultat L'élément <xsl:apply-template> L'élément <xsl:value-of> L'élément <xsl:for-each>

Page 51: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.51

Définition d'une règle

Définition des règles avec <xsl:template>, avec les attributs: match: condition de sélection des nœuds sur lesquels la règle

s'applique 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

Au moins un des attributs match ou name doit être présent

L'attribut match permet de spécifier des expressions complexes XPath pour sélectionner les nœuds

Page 52: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.52

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 <xsl:value-of>

Page 53: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.53

L'élément <xsl:apply-templates>

L'élément <xsl:apply-templates> permet d'appliquer récursivement les règles aux fils de l'élément sélectionné par la règle courante

Il a deux attributs optionnels: select: permet de sélectionner les descendants à

traiter mode: permet de sélectionner les règles à

appliquer L'attribut select permet de définir des

expressions complexes pour sélectionner des nœuds Similaire à l'attribut match de <xsl:template> Expressions XPath

Page 54: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.54

Utilisation du select<?xml version="1.0"?><xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/"> <html> <xsl:apply-templates/> </html> </xsl:template>

<xsl:template match="CATALOGUE"> <body> <xsl:apply-templates/> </body> </xsl:template>

<xsl:template match="ARTICLE"> <xsl:apply-templates select="LIBELLE"/> </xsl:template></xsl:stylesheet>

Style2.xsl

Page 55: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.55

L'élément <xsl:value-of>

L'élément <xsl:value-of> calcule la valeur d'une expression et la copie dans le résultat L'expression est évaluée dans le contexte de l'élément

courant

Il a deux attributs: select: attribut obligatoire spécifiant l'expression XPath à

évaluer disable-output-escaping: attribut optionnel gérant la

copie des caractères spéciaux (valeur: yes ou no)

La valeur d'un nœud est une string, sa valeur exacte dépend du type de nœud: Pour un élément, c'est tout le texte compris entre les

balises de début et de fin

Page 56: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.56

Utilisation de <xsl:value-of><?xml version="1.0"?><xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/"> <html> <xsl:apply-templates/> </html> </xsl:template>

<xsl:template match="CATALOGUE"> <body> <xsl:apply-templates/> </body> </xsl:template>

<xsl:template match="ARTICLE"> <xsl:value-of select="LIBELLE"/> </xsl:template></xsl:stylesheet>

Page 57: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.57

L'élément <xsl:for-each>

L'élément <xsl:value-of> ne devrait être appliqué qu'à des expressions retournant un nœud unique: Dans le cas contraire, seule la valeur du premier nœud

est retournée

L'élément <xsl:for-each> permet d'itérer sur un ensemble d'éléments défini par l'attribut: select: attribut obligatoire permettant de sélectionner

les nœuds à traiter

Le contenu de l'élément <xsl:for-each> est copié n fois dans le résultat: Les instructions xsl sont traitées comme dans une règle

<xsl:for-each> permet de réduire le nombre de règles, dans le cas de documents réguliers

Page 58: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.58

Utilisation de <xsl:for-each><?xml version="1.0"?><xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/"> <html> <xsl:apply-templates/> </html> </xsl:template>

<xsl:template match="CATALOGUE"> <body> <xsl:for-each select="ARTICLE"/> < xsl:value-of select="LIBELLE"/> </xsl:for-each> </body> </xsl:template>

</xsl:stylesheet>

Style3.xsl

Page 59: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.59

La sélection des éléments

L'attribut match des éléments <xsl:template> permet de spécifier des conditions complexes pour sélectionner les éléments auxquels appliquer une règle

La syntaxe de l'attribut select, utilisée par plusieurs instructions, permet de sélectionner des éléments parmi les descendants de l’élément courant auquel s’applique la règle

Page 60: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.60

Exemples d'expressions para: tout élément para *: tout élément chapter|appendix: tout élément chapter ou appendix olist/item: tout élément item avec un père olist appendix/*/para: tout élément para avec un grand-père

appendix appendix//para: tout élément para avec un ancêtre

appendix /: le nœud racine text(): tout nœud texte processing-instruction(): toute instruction de traitement node(): tout nœud id("W11"): élément d'ID W11

Page 61: Les outils de base : XPath, XSL, XLink, XForms 1. XPATH 2. XSLT 3. XSLFO 4. XLink 5. XForms 6. Conclusion

G. GardarinIII.61

Exemples avec tests

para[1]: tout élément para qui est le premier fils para de son père

*[position()=1 and self::para]: idem para[last()=1]: tout élément para qui est le seul fils

para de son père items/item[position()>1]: tout élément item qui à un

père items et qui n'est pas le premier fils item de son père

item[position() mod 2 = 1]: tout élément item qui est un fils item impair

@class: tout attribut class @*: tout attribut div[@class="appendix"]//p: tout élément p avec un

ancêtre div dont l'attribut class vaut appendix