1 les technologies xml cours 2 : transformation de documents xml (xpath, xslt) janvier 2009 -...

49
1 Les technologies XML Les technologies XML Cours 2 : Cours 2 : Transformation de documents XML Transformation de documents XML (XPath, XSLT) (XPath, XSLT) Janvier 2009 Janvier 2009 - Version 1.0 - - Version 1.0 -

Upload: suzanne-ferrier

Post on 03-Apr-2015

120 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

1

Les technologies XMLLes technologies XML

Cours 2 : Cours 2 : Transformation de documents XML Transformation de documents XML

(XPath, XSLT)(XPath, XSLT)

Janvier 2009Janvier 2009

- Version 1.0 - - Version 1.0 -

Page 2: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

2

SOMMAIRE DU COURS SOMMAIRE DU COURS TRANSFORMATIONS DE DOCUMENTS XMLTRANSFORMATIONS DE DOCUMENTS XML

Transformation d’un document XMLTransformation d’un document XML

XLL, XLink, XPointerXLL, XLink, XPointer

Syntaxe de XPathSyntaxe de XPath

Recherche simpleRecherche simple

Recherche par contexteRecherche par contexte

Recherche par prédicatsRecherche par prédicats

OpérateursOpérateurs

XSLXSL

Conclusion :Conclusion :

Page 3: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

3

TRANSFORMATION TRANSFORMATION D’UN DOCUMENT XML D’UN DOCUMENT XML 1/21/2

Les outils destinés à Les outils destinés à transformertransformer les documents XML les documents XML représentent ceux-ci comme un arbre de nœuds XML.représentent ceux-ci comme un arbre de nœuds XML.

XSLXSL est le langage qui permet d’écrire des feuilles de est le langage qui permet d’écrire des feuilles de style. Une feuille de style est constituée d’un ensemble style. Une feuille de style est constituée d’un ensemble de règles de transformations, s’appliquant chacune à un de règles de transformations, s’appliquant chacune à un ou plusieurs nœuds de l’arbre et permettant de ou plusieurs nœuds de l’arbre et permettant de transformer ce nœud en un nouveau nœud de l’arbre transformer ce nœud en un nouveau nœud de l’arbre résultat.résultat.

XPathXPath est le langage qui permet d’adresser une partie ou est le langage qui permet d’adresser une partie ou plusieurs parties d’un document, c’est à dire un ou plusieurs parties d’un document, c’est à dire un ou plusieurs nœuds du document XML.plusieurs nœuds du document XML.

Page 4: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

4

TRANSFORMATION TRANSFORMATION D’UN DOCUMENT XML D’UN DOCUMENT XML 2/22/2

Transformation effectuée par un processeur XSLTransformation effectuée par un processeur XSL

Selon http://www.w3.org/Style/XSL/

Page 5: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

5

… … XLL / XLink / XPointer …XLL / XLink / XPointer …

Le langage Le langage XLLXLL est un langage de description de est un langage de description de liens comportant deux parties : XLink et liens comportant deux parties : XLink et XPointer.XPointer.

XLinkXLink permet de manipuler des liens plus permet de manipuler des liens plus complexes que les liens hypertextes HTML (liens complexes que les liens hypertextes HTML (liens vers n’importe quel balise ou attribut, liens vers n’importe quel balise ou attribut, liens bidirectionnels) et de décrire le comportement bidirectionnels) et de décrire le comportement d’un lien.d’un lien.

XPointerXPointer permet non seulement de localiser permet non seulement de localiser une position dans un document mais aussi une une position dans un document mais aussi une plage de document.plage de document.

Page 6: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

6

XSLT XSLT 1/61/6

XSL : eXtensible Stylesheet Language.XSL : eXtensible Stylesheet Language.

Objectifs :Objectifs : Ce langage déclaratif permet de Ce langage déclaratif permet de transformer un document XML en :transformer un document XML en :

un autre document XML, HTML, WML, SMILun autre document XML, HTML, WML, SMIL

un document papier: PDF, LaTeXun document papier: PDF, LaTeX

du textedu texte

Page 7: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

7

XSLT XSLT 2/62/6

Principes :Principes :

Le langage XSLTLe langage XSLT décrit des règles pour décrit des règles pour transformer un document XML. transformer un document XML.

Ces règlesCes règles de transformations s’appliquent de transformations s’appliquent chacune à un ou plusieurs nœuds de l’arbre et chacune à un ou plusieurs nœuds de l’arbre et spécifient la transformation à effectuer sur un nœud spécifient la transformation à effectuer sur un nœud pour le transformer en un nouveau nœud de l’arbre pour le transformer en un nouveau nœud de l’arbre résultat. résultat.

Un processeur XSLTUn processeur XSLT lit d’une part un lit d’une part un document XML et d’autre part un document XSLT document XML et d’autre part un document XSLT et génère un nouveau document en appliquant les et génère un nouveau document en appliquant les règles de transformation. règles de transformation.

Page 8: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

8

XPATHXPATH

XPath est le résultat d’un XPath est le résultat d’un effort effort d’homogénéisationd’homogénéisation de la syntaxe et de la de la syntaxe et de la sémantique de fonctions communes à XSLT et sémantique de fonctions communes à XSLT et XPointer pour adresser des parties d’un XPointer pour adresser des parties d’un document.document.

XPath permet d’XPath permet d’effectuer des requêteseffectuer des requêtes dans dans un document XML. XPath est aux documents un document XML. XPath est aux documents XML, ce qu’est SQL aux bases de données.XML, ce qu’est SQL aux bases de données.

XPath est XPath est utilisé par XSLTutilisé par XSLT pour faire de la pour faire de la transformation de documents XML.transformation de documents XML.

Page 9: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

9

RAPPEL : LES DIFFERENTS RAPPEL : LES DIFFERENTS TYPES DE NOEUDS TYPES DE NOEUDS 1/21/2

Exemple de fichiers XML :Exemple de fichiers XML :

Page 10: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

10

RAPPEL : LES DIFFERENTS RAPPEL : LES DIFFERENTS TYPES DE NOEUDS TYPES DE NOEUDS 2/22/2

Arbre correspondant :Arbre correspondant :

Page 11: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

11

SYNTAXE XPATH SYNTAXE XPATH 1/81/8

La syntaxe de base XPath est semblable à l’adressage dans un système de fichiers. Ex. :

Documents XML : <annuaire type=”LDAP”> <entree>

<nom>Pierre Martin</nom><phone>0556010101</phone>

</entree> <entree>

<nom>Martine Durand</nom> </entree> </annuaire>

Syntaxe XPath : /annuaire/entree/nom

Résultat : <nom>Pierre Martin</nom> <nom>Martine Durand</nom>

Page 12: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

12

SYNTAXE XPATH SYNTAXE XPATH 2/82/8

Recherche simple :

Page 13: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

13

SYNTAXE XPATH SYNTAXE XPATH 3/83/8

Autre exemple : <A> <B att=”fr”>

<C>Bonjour</C><D/>

</B> <B att=”en”>

<C>Hello</C> </B> <D id=”12”>

<G> <H/> </G> </D> <D id=”10”/> <EE/> <DE/></A>

Page 14: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

14

SYNTAXE XPATH SYNTAXE XPATH 4/84/8

Recherche par contexte :

Page 15: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

15

SYNTAXE XPATH SYNTAXE XPATH 5/85/8

Recherche par prédicats :

Page 16: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

16

SYNTAXE XPATH SYNTAXE XPATH 6/86/8

Recherche par prédicats (suite) :

Page 17: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

17

SYNTAXE XPATH SYNTAXE XPATH 7/87/8

Utilisation

d’opérateurs :

Exemple :

Requête:

//*[@att=’en’ and name()=’B’]

Réponse:

<B att=”en”> <C>Hello</C></B>

Page 18: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

18

SYNTAXE XPATH SYNTAXE XPATH 8/88/8

Quelques exemples :

Page 19: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

19

Processeurs XSLTProcesseurs XSLT

Processeur coté client – intégré au navigateur Processeur coté client – intégré au navigateur Mozilla FireFox, Internet Explorer 6.1. Mozilla FireFox, Internet Explorer 6.1.

Processeur côté serveur : un processeur installé Processeur côté serveur : un processeur installé sur le serveur envoie, après traitement le sur le serveur envoie, après traitement le document résultant au client déployement des document résultant au client déployement des servlets de transformation sous tomcat). servlets de transformation sous tomcat).

Page 20: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

20

XSLT XSLT 3/63/6

Fonctions de base (transformations) offertes par Fonctions de base (transformations) offertes par une feuille de style XSLT :une feuille de style XSLT :

extraction de donnéesextraction de données

génération de textegénération de texte

suppression de contenu (noeuds)suppression de contenu (noeuds)

déplacement de contenu (noeuds)déplacement de contenu (noeuds)

duplication de contenu (noeuds)duplication de contenu (noeuds)

tri de donnéestri de données

Site de référence :Site de référence :

http://www.laltruiste.com/coursxsl/sommaire.htmlhttp://www.laltruiste.com/coursxsl/sommaire.html

http://www.w3.org/http://www.w3.org/

Page 21: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

21

XSLT XSLT 4/64/6

Dans l’exemple qui suitDans l’exemple qui suit, on souhaite , on souhaite transformer un document XML en document transformer un document XML en document HTML :HTML :

Document XML source:Document XML source:<personne id="0001"> <nom>Durand</nom> <prenom>Martine</prenom></personne>

Document HTML cible :Document HTML cible :<html> <body> <p><b>Durand</b> Martine</p> </body></html>

Page 22: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

22

XSLT XSLT 5/65/6

Document XSLT correspondant :Document XSLT correspondant :<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="html" indent="yes" encoding="ISO-8859-1> <xsl:template match="personne">

<html> <body>

<p> <b>

<xsl:value-of select="nom"/> </b> <xsl:value-of select="prenom"/></p>

</body></html>

</xsl:template></xsl:stylesheet>

Page 23: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

23

XSLT XSLT 6/66/6

En résumé :En résumé :

XSL est un langage XML permettant de définir des XSL est un langage XML permettant de définir des feuilles de stylefeuilles de style

Les composants d’un document XSL sont :Les composants d’un document XSL sont :

XSLT : pour manipuler les documents

XPath : pour naviguer dans la structure hiérarchique des documents

XSL Formatting Objects : pour définir la mise en forme des documents

Page 24: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

24

STRUCTURE D’UN STRUCTURE D’UN DOCUMENT XSLT DOCUMENT XSLT 1/61/6

Structure d’un document XSLT :Structure d’un document XSLT :

<xsl:stylesheet version="1.0" <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:import href="..."/><xsl:import href="..."/><xsl:include href="..."/><xsl:include href="..."/><xsl:strip-space elements="..."/><xsl:strip-space elements="..."/><xsl:preserve-space elements="..."/><xsl:preserve-space elements="..."/><xsl:output method="..."/><xsl:output method="..."/><xsl:key name="..." match="..." use="..."/><xsl:key name="..." match="..." use="..."/><xsl:decimal-format name="..."/><xsl:decimal-format name="..."/><xsl:attribute-set name="...">...</xsl:attribute-set><xsl:attribute-set name="...">...</xsl:attribute-set><xsl:variable name="...">...</xsl:variable><xsl:variable name="...">...</xsl:variable><xsl:param name="...">...</xsl:param><xsl:param name="...">...</xsl:param><xsl:template match="..."><xsl:template match="...">...</xsl:template>...</xsl:template><xsl:template name="..."><xsl:template name="...">...</xsl:template>...</xsl:template>

</xsl:stylesheet></xsl:stylesheet>

Page 25: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

25

STRUCTURE D’UN STRUCTURE D’UN DOCUMENT XSLT DOCUMENT XSLT 2/62/6

L’élément racine : L’élément racine : <xsl:stylesheet><xsl:stylesheet>

L’attribut L’attribut versionversion indique la version de XSLT indique la version de XSLT exigées exigées par la feuille de stylespar la feuille de styles

L’attribut L’attribut xmlns:xslxmlns:xsl indique l’URI de l’espace indique l’URI de l’espace de nom xsl (il est possible de déclarer de nom xsl (il est possible de déclarer plusieurs espaces de nom).plusieurs espaces de nom).

Les éléments fils de <xsl:stylesheet> sont Les éléments fils de <xsl:stylesheet> sont appelés appelés éléments de premier niveauéléments de premier niveau

Page 26: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

26

STRUCTURE D’UN STRUCTURE D’UN DOCUMENT XSLT DOCUMENT XSLT 3/63/6

<xsl:import><xsl:import> et et <xsl:include><xsl:include> permettent permettent d’inclure des règles d’un document XSLT dans d’inclure des règles d’un document XSLT dans un autre.un autre.

La différence entre ces 2 instructions La différence entre ces 2 instructions résident dans la gestion des conflits en résident dans la gestion des conflits en terme d’application des règles :terme d’application des règles :

avec xsl:import les règles importées ont une préséance moindre que celles du programme importateur (l’ordre d’importation est important)

avec xsl:include il n’y a pas de notion de préséance xsl:incude doit être le premier élément de premier niveau du programme.

Page 27: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

27

STRUCTURE D’UN STRUCTURE D’UN DOCUMENT XSLT DOCUMENT XSLT 4/64/6

<xsl:output> permet de définir le format de permet de définir le format de sortie. sortie.

Exemple :Exemple :

<xsl:output method=“html” indent=“yes”<xsl:output method=“html” indent=“yes”

encoding=“iso-8859-1”/>encoding=“iso-8859-1”/>

Cette déclaration précise que :Cette déclaration précise que : le document cible est le format HTML, le fichier cible sera indenté, les caractères du fichier XML d’entrée sont encodé selon la norme iso-8859-1.

Page 28: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

28

STRUCTURE D’UN STRUCTURE D’UN DOCUMENT XSLT DOCUMENT XSLT 5/65/6

<xsl:output> (suite) :(suite) :

La notion d’encoding a son importance si le La notion d’encoding a son importance si le fichier XML contient des caractèresfichier XML contient des caractères accentués et est déclaré avec l’entête accentués et est déclaré avec l’entête

<?xml version="1.0" encoding="iso-8859-1"?><?xml version="1.0" encoding="iso-8859-1"?>

EnEn effet effet le fichier XML sera correctement le fichier XML sera correctement transformé si l’on déclare le même encodage transformé si l’on déclare le même encodage auau niveau du XML et du XSLTniveau du XML et du XSLT..

Page 29: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

29

STRUCTURE D’UN STRUCTURE D’UN DOCUMENT XSLT DOCUMENT XSLT 6/66/6

<xsl:strip-space><xsl:strip-space> et et <xsl:preserve-space><xsl:preserve-space> : :

<xsl:strip-space elements="liste_éléments"/><xsl:strip-space elements="liste_éléments"/> permet la suppression des espaces blancs superflus permet la suppression des espaces blancs superflus pour les éléments énumérés dans la liste.pour les éléments énumérés dans la liste.

Exemple : <xsl:strip-space elements="nom prenom"/>

<xsl:preserve-space<xsl:preserve-space elements="liste_éléments"/>elements="liste_éléments"/> permet de préserver les espaces blancs tels quels permet de préserver les espaces blancs tels quels pour des éléments énumérés dans une liste.pour des éléments énumérés dans une liste.

Exemple : <xsl:preserve-space elements="adresse"/>

Page 30: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

30

LES REGLES DE LES REGLES DE TRANSFORMATION TRANSFORMATION 1/111/11

<xsl:template><xsl:template> définit une règle XSLT : définit une règle XSLT :

Un document XSLT se compose d’un ensemble de Un document XSLT se compose d’un ensemble de règles (template) permettant de construire le règles (template) permettant de construire le résultat.résultat.

L’application d’une règle produit un fragment du L’application d’une règle produit un fragment du document résultat.document résultat.

L’ordre des règles n’a pas d’importance.L’ordre des règles n’a pas d’importance.

Une règle s’applique dans le contexte d’un nœud de Une règle s’applique dans le contexte d’un nœud de l’arbre.l’arbre.

Le corps d’une règle se compose d’un ensemble Le corps d’une règle se compose d’un ensemble d’instructions.d’instructions.

Page 31: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

31

LES REGLES DE LES REGLES DE TRANSFORMATION TRANSFORMATION 2/112/11

<<xsl:templatexsl:template match=match=""patternpattern" name= "qname"" name= "qname">> : :

L'attribut match est un motif (XPath) qui identifie le ou les L'attribut match est un motif (XPath) qui identifie le ou les nœud(s) source pour lesquels la règle s'applique. Cet attribut nœud(s) source pour lesquels la règle s'applique. Cet attribut est exigé à moins que l'élément <xsl:template> ait un attribut est exigé à moins que l'élément <xsl:template> ait un attribut name.name.

Exemple :Exemple :

<xsl:template match="personne">- <B><xsl:value-of select="nom"/></B><xsl:value-of select="prenom"/>

</xsl:template>

Si un template contient du texte ou des éléments XML (autres Si un template contient du texte ou des éléments XML (autres que des instructions XSL), ces éléments seront écrits sur la que des instructions XSL), ces éléments seront écrits sur la sortie. Il est néanmoins conseillé d’utiliser les fonctions de sortie. Il est néanmoins conseillé d’utiliser les fonctions de création d’élément XML.création d’élément XML.

Page 32: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

32

Exemples Exemples <?xml version="1.0" encoding="ISO-8859-1" standalone="no"?><?xml version="1.0" encoding="ISO-8859-1" standalone="no"?>

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

<exposition><exposition>

<tableau><tableau>

<titre>Déjeuner sur l'herbe</titre><titre>Déjeuner sur l'herbe</titre>

<artiste>Edouard Manet</artiste><artiste>Edouard Manet</artiste>

</tableau></tableau>

<tableau><tableau>

<titre>Déjeuner des Canotiers</titre><titre>Déjeuner des Canotiers</titre>

<artiste>Auguste Renoir</artiste><artiste>Auguste Renoir</artiste>

</tableau></tableau>

<tableau><tableau>

<titre>Waterloo Bridge, le soleil dans le brouillard</titre><titre>Waterloo Bridge, le soleil dans le brouillard</titre>

<artiste>Claude Monet</artiste><artiste>Claude Monet</artiste>

</tableau></tableau>

<tableau><tableau>

<titre>Mardi Gras, soleil couchant, boulevard Montmartre</titre><titre>Mardi Gras, soleil couchant, boulevard Montmartre</titre>

<artiste>Camille Pissaro</artiste><artiste>Camille Pissaro</artiste>

</tableau></tableau>

<tableau><tableau>

<titre>Les Joueurs de cartes</titre><titre>Les Joueurs de cartes</titre>

<artiste>Paul Cézanne</artiste><artiste>Paul Cézanne</artiste>

</tableau></tableau>

</exposition></exposition>

Page 33: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

33

Exemples (XSL)Exemples (XSL)

<?xml version="1.0" encoding="ISO-8859-1"?><?xml version="1.0" encoding="ISO-8859-1"?>

<xsl:stylesheet version="1.0" <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:output method="html" indent="yes" encoding="ISO-8859-1"/><xsl:output method="html" indent="yes" encoding="ISO-8859-1"/>

…… …… - la mise en forme html- la mise en forme html

<xsl:template match="/exposition"><xsl:template match="/exposition">

<td><td><xsl:value-of select="tableau/titre"/><xsl:value-of select="tableau/titre"/></td></td>

<td><td><xsl:value-of select="tableau/artiste"/><xsl:value-of select="tableau/artiste"/></td> </tr></td> </tr>

</table> </table> -le 1 élément uniquement-le 1 élément uniquement

</body></body>

</html></html>

</xsl:template></xsl:template>

</xsl:stylesheet></xsl:stylesheet>

Page 34: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

34

Exemples Exemples

…………

<html><html>

<body><body>

<table border="1" cellspacing="0" cellpadding="3"><table border="1" cellspacing="0" cellpadding="3">

<tr bgcolor="#FFFF00"><tr bgcolor="#FFFF00">

<td>Titre</td><td>Titre</td>

<td>Artiste</td><td>Artiste</td>

</tr></tr>

<xsl:for-each select="tableau"><xsl:for-each select="tableau">

<tr><tr>

<td><xsl:value-of select="titre"/></td><td><xsl:value-of select="titre"/></td>

<td><xsl:value-of select="artiste"/></td><td><xsl:value-of select="artiste"/></td>

</tr></tr>

</xsl:for-each></xsl:for-each>

</table></table>

</body></body>

</html></html>

</xsl:template></xsl:template>

</xsl:stylesheet></xsl:stylesheet>

Page 35: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

35

LES REGLES DE LES REGLES DE TRANSFORMATION TRANSFORMATION 3/113/11

Les fonctions de création de noeudsLes fonctions de création de noeuds::

Création d’un élémentCréation d’un élément : :

<<xsl:elementxsl:element name= name=qnameqname>>

Création d’un attribut :Création d’un attribut :

<<xsl:attributexsl:attribute name= name=qname> valeurqname> valeur

Création de texte :Création de texte :

<<xsl:textxsl:text> > textetexte

Création d’instructions de traitement :Création d’instructions de traitement :

<<xsl:processing-instructionxsl:processing-instruction name= name=qname>qname>

Création de commentaires :Création de commentaires :

<<xsl-commentxsl-comment> > texttext

Page 36: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

36

LES REGLES DE LES REGLES DE TRANSFORMATION TRANSFORMATION 4/114/11

<xsl:value-of><xsl:value-of> et et <xsl:copy-of><xsl:copy-of>

<xsl:value-of><xsl:value-of> crée un nœud de type texte correspondant crée un nœud de type texte correspondant au résultat de l’évaluation de l’expression. au résultat de l’évaluation de l’expression.

Syntaxe : <xsl:value-of select="expr"/>

Exemples : <xsl:value-of select="nom"/> <xsl:value-of select="montant@devise"/>

<xsl:copy-of><xsl:copy-of> fournit un moyen simple pour copier le fournit un moyen simple pour copier le nœud courantnœud courant. .

Syntaxe : <xsl:copy select="pattern"/>

Exemple : <xsl:copy-of select="personne"/>

Page 37: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

37

LES REGLES DE LES REGLES DE TRANSFORMATION TRANSFORMATION 5/115/11

Les instructions <xsl:if>Les instructions <xsl:if> et <xsl-choose> et <xsl-choose>::

L’attribut test spécifie une expression. Après L’attribut test spécifie une expression. Après évaluation de cette expression, le résultat est converti évaluation de cette expression, le résultat est converti en booléen. Si le résultat est vrai alors le contenu du en booléen. Si le résultat est vrai alors le contenu du modèle est appliqué, sinon rien.modèle est appliqué, sinon rien.

Exemples :Exemples :<xsl:if test="@devise=‘EURO‘"> <img src="euro.gif"> </xsl:if>

<xsl:choose> <xsl:when test="@devise=‘EURO‘">

<img src="euro.gif"> </xsl:when>

<xsl:otherwise> <img src="dollar.gif">

</xsl:otherwise></xsl:choose>

Page 38: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

38

LES REGLES DE LES REGLES DE TRANSFORMATION TRANSFORMATION 6/116/11

L’instruction de répétition <xsl:for-each>L’instruction de répétition <xsl:for-each> ::

Cet Cet élément permet d'appliquer des règles de élément permet d'appliquer des règles de style sur chaque nœud identique d'un style sur chaque nœud identique d'un templatetemplate. . Le contenu de cette instruction est un modèle.Le contenu de cette instruction est un modèle.

Exemple :Exemple :<xsl:for-each select="personne"> <tr> <td><xsl:value-of select="nom"/></td> <td><xsl:value-of

select="prenom"/></td> </tr> </xsl:for-each>

Page 39: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

39

LES REGLES DE LES REGLES DE TRANSFORMATION TRANSFORMATION 7/117/11

<xsl:sort> <xsl:sort> permet d'effectuer un tri sur des données permet d'effectuer un tri sur des données selon des critères spécifiésselon des critères spécifiés ::

Lorsqu'un élément <xsl:apply-templates> ou Lorsqu'un élément <xsl:apply-templates> ou <xsl:for-each> a un ou plusieurs fils <xsl:sort>, les <xsl:for-each> a un ou plusieurs fils <xsl:sort>, les nœuds sélectionnés sont triés et traités en fonction nœuds sélectionnés sont triés et traités en fonction des clés de tri spécifiés. Lorsque des éléments des clés de tri spécifiés. Lorsque des éléments xsl:sort sont utilisés dans xsl:for-each, ils doivent xsl:sort sont utilisés dans xsl:for-each, ils doivent apparaître en premier.apparaître en premier.

Exemple :Exemple :<xsl:for-each select="personne"> <xsl:sort select="nom" order="ascending" 

data-type="text" case-order="lower-first"/></xsl:for-each>

Page 40: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

40

LES REGLES DE LES REGLES DE TRANSFORMATION TRANSFORMATION 8/118/11

<xsl:apply-templates> <xsl:apply-templates> permet d’appliquer un modèle permet d’appliquer un modèle de manière récursive aux fils du nœud courantde manière récursive aux fils du nœud courant ::

En l'absence de l'attribut select, l'instruction <xsl:apply-En l'absence de l'attribut select, l'instruction <xsl:apply-templates> traite tous les fils du nœud courant, y templates> traite tous les fils du nœud courant, y compris les nœuds textuelscompris les nœuds textuels..

Exemple :Exemple :<xsl:template match="personne">

<table> <xsl:apply-templates select="nom">

<xsl:sort select="nom" order="ascending"/> </xsl:apply-templates>

</table></xsl:template> <xsl:template match="nom">

<tr>…</tr></xsl:template>

Page 41: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

41

LES REGLES DE LES REGLES DE TRANSFORMATION TRANSFORMATION 9/119/11

Il existe trois façons d’appeler un templateIl existe trois façons d’appeler un template ::

Sélectionner les nœuds à traiter à l’aide d’une Sélectionner les nœuds à traiter à l’aide d’une requête XPath et leur appliquer les templates requête XPath et leur appliquer les templates correspondants :correspondants : <xsl:apply-templates select="nom">

Appliquer les templates correspondants à tous les Appliquer les templates correspondants à tous les fils du nœud courant :fils du nœud courant : <xsl:apply-templates/>

Appeler un template grâce à son nom (à la manière Appeler un template grâce à son nom (à la manière d’un sous-programme). Contrairement aux deux d’un sous-programme). Contrairement aux deux méthodes précédentes, on ne l’applique pas à un méthodes précédentes, on ne l’applique pas à un ensemble de sous-éléments du nœud courant mais à ensemble de sous-éléments du nœud courant mais à ce même nœud (pas de changement de contexte).ce même nœud (pas de changement de contexte). <xsl:call-template name="nom">

Page 42: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

42

LES REGLES DE LES REGLES DE TRANSFORMATION TRANSFORMATION 10/1110/11

Sélection d’une règleSélection d’une règle parmis plusieurs règles parmis plusieurs règles candidatescandidates::

Il existe des priorités implicites qui permettent au Il existe des priorités implicites qui permettent au processeur de choisirprocesseur de choisir

On peut aussi donner explicitement une prioritéOn peut aussi donner explicitement une priorité

Lorsque le choix est impossible, le processeur s’arrête.Lorsque le choix est impossible, le processeur s’arrête.

Priorités implicite Priorités implicite : : plus c’est spécifique, plus c’est prioritaireplus c’est spécifique, plus c’est prioritaire

Priorité - 0.5 : Les motifs simples (autres qu’un nom Priorité - 0.5 : Les motifs simples (autres qu’un nom d’élément ou d’attribut) tels que * par exemple.d’élément ou d’attribut) tels que * par exemple.

Priorité 0 : Les motifsPriorité 0 : Les motifs constitués d’une seule étape XPath, constitués d’une seule étape XPath, avec un nom d’élément ou d’attribut et sans prédicat.avec un nom d’élément ou d’attribut et sans prédicat.

Priorité 0.5 : Tous les autres (prédicats, plusieurs étapes)Priorité 0.5 : Tous les autres (prédicats, plusieurs étapes)

Page 43: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

43

LES REGLES DE LES REGLES DE TRANSFORMATION TRANSFORMATION 11/1111/11

Les modesLes modes::

Leur raison d’être réside dans le fait qu’un même Leur raison d’être réside dans le fait qu’un même nœud peut être traité par plusieurs règles (un nœud peut être traité par plusieurs règles (un chapitre par exemple peut être traité une fois pour chapitre par exemple peut être traité une fois pour construire l’index et une autre fois pour publier le construire l’index et une autre fois pour publier le contenu).contenu). Pour distinguer les deux règles, on les Pour distinguer les deux règles, on les distinguera par mode.distinguera par mode.

<xsl:template match=“CHAPITRE"<xsl:template match=“CHAPITRE" mode="INDEX"mode="INDEX">> <a href="#{TITRE}"><a href="#{TITRE}"><xsl:value-of select="TITRE"/></a><xsl:value-of select="TITRE"/></a> </xsl:template></xsl:template> <xsl:template match="CHAPITRE"><xsl:template match="CHAPITRE"> <a name="{TITRE}"/><a name="{TITRE}"/> <h1><xsl:value-of select="TITRE"/></h1><h1><xsl:value-of select="TITRE"/></h1> <p><xsl:value-of select=“TEXTE"/></p><p><xsl:value-of select=“TEXTE"/></p> <br/><br/> </xsl:template></xsl:template>

Page 44: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

44

VARIABLES ET VARIABLES ET PARAMETRES PARAMETRES 1/21/2

<xsl:variable><xsl:variable> définit une variable XSLT : définit une variable XSLT :

Syntaxe de la déclaration :Syntaxe de la déclaration :<xsl:variable name="MIN">0</xsl:variable>

<xsl:variable name="MAX" select="99"/>

Syntaxe de l’invocation :Syntaxe de l’invocation :<xsl:apply-templates select="personne[$MIN]">

<xsl:text name="MAX">Max : {$MAX}</xsl:text>

La portée d’une variable est limitée à l’élément dans La portée d’une variable est limitée à l’élément dans lequel elle a été définie.lequel elle a été définie.

Une fois déclarée, la valeur d’une variable ne peut être Une fois déclarée, la valeur d’une variable ne peut être modifiée par la suite. modifiée par la suite.

Page 45: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

45

VARIABLES ET VARIABLES ET PARAMETRES PARAMETRES 2/22/2

<xsl:param><xsl:param> définit un paramètre XSLT: définit un paramètre XSLT:

Syntaxe de la déclaration :Syntaxe de la déclaration :

<xsl:param name="MIN">0</xsl:param><xsl:param name="MAX" select="99"/>

La principale différence entre une variable et un La principale différence entre une variable et un paramètre est qu’un paramètre peut être passé en paramètre est qu’un paramètre peut être passé en paramètre à un template. Cela se fait de la manière paramètre à un template. Cela se fait de la manière suivante :suivante :

<xsl:param name="MIN">0</xsl:param><xsl:call-template name="annee"> <xsl:with-param name="MIN" select="$MIN+1"/></xsl:call-template>

Page 46: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

46

FONCTIONS XSLT FONCTIONS XSLT 1/21/2

XSLT fournit un certain nombre de XSLT fournit un certain nombre de fonctions :fonctions :

La fonction La fonction format-numberformat-number convertit son premier convertit son premier argument en une chaîne utilisant le motif de formatage argument en une chaîne utilisant le motif de formatage spécifié par le second argument.spécifié par le second argument.

Ce motifCe motif de formatage est composée d’un préfixe de formatage est composée d’un préfixe optionnel, d’un optionnel, d’un motif de formatage motif de formatage et d’un suffixe et d’un suffixe optionnel. Le motif de formatage est une séquence de optionnel. Le motif de formatage est une séquence de caractères spéciaux définis dans le tableau suivant :caractères spéciaux définis dans le tableau suivant :

ExemplesExemples : :

<xsl:value-of select="format-number($REMISE,’ ##% ’)"/><xsl:value-of select="format-number($REMISE,’ ##% ’)"/>

<xsl:value-of select="format-number(PRIX,’##,##0.00 FF ’)"/><xsl:value-of select="format-number(PRIX,’##,##0.00 FF ’)"/>

Page 47: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

47

FONCTIONS XSLT FONCTIONS XSLT 2/22/2

Caractères de formattage de la fonction Caractères de formattage de la fonction format-number :format-number :

Page 48: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

48

CONCLUSION SUR XSLTCONCLUSION SUR XSLT

Avantages d’XSLT : A partir d’un même document XML, on peut générer

plusieurs formats en sortie (HTML, WML…)

Inconvénients d’XSLT : Bien que la version 1.0 ait été stabilisée, les outils

implémentant XSLT ne respectent pas tous la recommandation (fonctionnalités manquantes, ajout de fonctionnalités et d’éléments propriétaires).

XSLT versus CSS : XSLT peut tout à fait être utilisé de manière

combinée avec les CSS, en particulier quand la cible est du HTML4 ou du XHTML1.

Page 49: 1 Les technologies XML Cours 2 : Transformation de documents XML (XPath, XSLT) Janvier 2009 - Version 1.0 -

49