Les technologies XML
Les technologies XML
Cours 2 :
Cours 2 :
Transformation et Formatage de
Transformation et Formatage de
documents XML :
documents XML :
Cours 2.2 :
Cours 2.2 :
XSLT
XSLT
Novembre 2010 Novembre 2010 - Version 3.2 - - Version 3.2 -SOMMAIRE DU COURS
SOMMAIRE DU COURS
TRANSFORMATIONS DE DOCUMENTS XML
TRANSFORMATIONS DE DOCUMENTS XML
Introduction à XSL
Introduction à XSL
Noeuds et arbre XML
Noeuds et arbre XML
XSLT en bref
XSLT en bref
Objectifs
Objectifs
Principes
Principes
Exemple XML + XSL
Exemple XML + XSL
XHTML
XHTML
XSL en résumé
XSL en résumé
Structure d'un document XML
Structure d'un document XML
Règles de transformation
Règles de transformation
Variables et paramètres
Variables et paramètres
Fonctions
Fonctions
Conclusion
Conclusion
Les outils destinés à
Les outils destinés à
transformer
transformer
les
les
documents XML représentent ceux-ci comme un
documents XML représentent ceux-ci comme un
arbre de nœuds XML.
arbre de nœuds XML.
XSL
XSL
est le langage qui permet d’écrire des
est le langage qui permet d’écrire des
feuilles de style. Une feuille de style est
feuilles de style. Une feuille de style est
constituée d’un ensemble de règles de
constituée d’un ensemble de règles de
transformations, s’appliquant chacune à un ou
transformations, s’appliquant chacune à un ou
plusieurs nœuds de l’arbre et permettant de
plusieurs nœuds de l’arbre et permettant de
transformer ce nœud en un nouveau nœud de
transformer ce nœud en un nouveau nœud de
l’arbre résultat.
l’arbre résultat.
INTRODUCTION A XSL
INTRODUCTION A XSL
INTRODUCTION A XSL
2/32/3XSL est plus riche que CSS :
XSL est plus riche que CSS :
XSL supporte toutes les fonctionnalités de la norme CSS1 et a été conçu dans la perspective de pouvoir facilement "traduire" une feuille de style CSS en feuille de style XSL (et vice-versa pour des feuilles XSL simples).
XSL apporte des mécanisme de sélection des cibles stylistiques plus performant que celui de CSS ainsi que des mécanismes de ré-organisation des données.
Il existe décomposé en trois parties :
XSL Transform (XSLT)XSL Transform (XSLT)
XSL Formatting Object (XSL-FO)
XSL Formatting Object (XSL-FO)
XML Path Language (XPATH)
INTRODUCTION A XSL
INTRODUCTION A XSL
3/33/3XSL : 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 texte ou XML (XHTML, ...)
un autre document texte ou XML (XHTML, ...)
via XSLT
un autre format de rendu : PDF, Postscript, image,
un autre format de rendu : PDF, Postscript, image,
audio, etc.
audio, etc.
via XSL-FO
RAPPEL : LES DIFFERENTS
RAPPEL : LES DIFFERENTS
TYPES DE NOEUDS
TYPES DE NOEUDS
1/21/2Exemple de fichiers XML :
RAPPEL : LES DIFFERENTS
RAPPEL : LES DIFFERENTS
TYPES DE NOEUDS
TYPES DE NOEUDS
2/22/2Arbre correspondant :
XSLT
XSLT
1/41/4Principes :
Principes :
Le langage XSLT
Le langage XSLT
décrit des règles pour
décrit des règles pour
transformer un document XML.
transformer un document XML.
Ces règles
Ces 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 XSLT
Un 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.
XSLT
XSLT
2/42/4Fonctions de base (transformations)
Fonctions de base (transformations)
offertes par une feuille de style XSLT :
offertes par une feuille de style XSLT :
extraction de données
extraction de données
génération de texte
gé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ées
tri de données
Site de référence :
Site de référence :
http://www.laltruiste.com/coursxsl/sommaire.html http://www.laltruiste.com/coursxsl/sommaire.htmlXSLT
XSLT
3/43/4Dans l’exemple qui suit
Dans 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> <prénom>Martine</prénom> </personne>Document HTML cible :
Document HTML cible :
<html> <body> <p><b>Durand</b> Martine</p> </body> </html>XSLT
XSLT
4/44/4Document XSLT correspondant :
Document XSLT correspondant :
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" indent="yes"/> <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>Un exemple complet: XML & XSL
Le fichier essai.xml (eXtensible Markup Language) :
<?xml version="1.0" encoding="iso88591" ?> <!DOCTYPE stock SYSTEM "essai.dtd"> <stock> <produit> <nom> Livre </nom> <prix monnaie="Francs"> 50 </prix> <comment> Un article très recherché </comment> </produit> <produit> <nom> CD </nom><prix monnaie="Euros"> 23 </prix> </produit> </stock>
Un exemple complet: production HTML
le traitement des fichiers essai.xml, essai.dtd, essai.xsl donne le fichier essai.html suivant: <html> <body> <h1>Stock de la société</h1> <h2>Produit Livre </h2> <p>Prix : 50 en Francs</p> <p> Un article très recherché </p> <h2>Produit CD </h2> <p>Prix : 23 en Euros</p> </body> </html>
Un exemple complet: XSL
Le fichier essai.xsl (eXtensible Style Language) :
<?xml version="1.0" encoding="iso88591" ?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:output method="html"/> <xsl:template match="/"> <html><body> <xsl:applytemplates/> </body></html> </xsl:template> <xsl:template match="stock"> <h1>Stock de la société</h1> <xsl:applytemplates/> </xsl:template>
<xsl:template match="produit"> <h2>Produit <xsl:valueof select="nom"/></h2> <p>Prix : <xsl:valueof select="prix"/> en <xsl:valueof select="prix/@monnaie"/></p> <xsl:if test="comment"> <p><xsl:valueof select="comment"/></p> </xsl:if> </xsl:template> </xsl:stylesheet>
STRUCTURE D’UN DOCUMENT XSLT
STRUCTURE D’UN DOCUMENT XSLT
1/61/6
Structure d’un document XSLT :
Structure d’un document XSLT :
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:import href="..."/> <xsl:include href="..."/> <xsl:stripspace elements="..."/> <xsl:preservespace elements="..."/> <xsl:output method="..."/> <xsl:key name="..." match="..." use="..."/> <xsl:decimalformat name="..."/> <xsl:attributeset name="...">...</xsl:attributeset> <xsl:variable name="...">...</xsl:variable> <xsl:param name="...">...</xsl:param> <xsl:template match="...">...</xsl:template> <xsl:template name="...">...</xsl:template> </xsl:stylesheet>
STRUCTURE D’UN DOCUMENT XSLT
STRUCTURE D’UN DOCUMENT XSLT
2/62/6
L’élément racine :
L’élément racine :
<xsl:stylesheet>
<xsl:stylesheet>
L’attribut
L’attribut
version
version
indique la version de XSLT
indique la version de XSLT
exigées
exigées
par la feuille de styles
par la feuille de styles
L’attribut
L’attribut
xmlns:xsl
xmlns:xsl
indique l’URI de l’espace
indique l’URI de l’espace
de nom xsl (il est nécessaire pour indiquer à
de nom xsl (il est nécessaire pour indiquer à
un éventuel processeur XSL que notre fichier
un éventuel processeur XSL que notre fichier
est du XSL valide).
est du XSL valide).
Les éléments fils de <xsl:stylesheet> sont
Les éléments fils de <xsl:stylesheet> sont
appelés
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:import doit être le premier
élément de premier niveau du programme.
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.
XHTML est du xml, donc
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ères
fichier
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 ?>.
En
En
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
au
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 :
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.
LES REGLES DE
LES REGLES DE
TRANSFORMATION
TRANSFORMATION
2/112/11<
<
xsl:template
xsl:template
match=match=""patternpattern" name= "qname"" name= "qname">> : : L'attribut match est un motif (XPath) qui identifie le ouL'attribut match est un motif (XPath) qui identifie le ou
les nœud(s) source pour lesquels la règle s'applique. Cet
les nœud(s) source pour lesquels la règle s'applique. Cet
attribut
attribut est exigé à moins que l'élément <xsl:template> est exigé à moins que l'élément <xsl:template> ait un attribut name.
ait un attribut name.
Exemple : Exemple : <xsl:template match="personne"> <B><xsl:valueof select="nom"/></B> <xsl:valueof select="prenom"/> </xsl:template>
Si un template contient du texte ou des éléments XML
Si un template contient du texte ou des éléments XML
(autres que des instructions XSL), ces éléments seront
(autres que des instructions XSL), ces éléments seront
écrits sur la sortie.
LES REGLES DE
LES REGLES DE
TRANSFORMATION
TRANSFORMATION
3/113/11Les fonctions de création de noeuds
Les fonctions de création de noeuds
:
:
Création d’un élément
Cré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 :
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 crée un nœud de type texte correspondant au résultat de l’évaluation de l’expression.
correspondant 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 courant
nœud courant. .
Syntaxe :
<xsl:copy select="pattern"/>
Exemple :
LES REGLES DE
LES REGLES DE
TRANSFORMATION
TRANSFORMATION
5/115/11Les 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
évaluation de cette expression, le résultat est
converti en booléen. Si le résultat est vrai alors le
converti en booléen. Si le résultat est vrai alors le
contenu du modèle est appliqué, sinon rien.
contenu du 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>LES REGLES DE
LES REGLES DE
TRANSFORMATION
TRANSFORMATION
6/116/11L’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
template
template
.
.
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>
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és
selon 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"/>
LES REGLES DE
LES REGLES DE
TRANSFORMATION
TRANSFORMATION
8/118/11<xsl:apply-templates>
<xsl:apply-templates> permet d’appliquer un modèle de
permet d’appliquer un modèle de
manière récursive aux fils du nœud courant
manière récursive aux fils du nœud courant
:
:
En l'absence de l'attribut select, l'instruction
En l'absence de l'attribut select, l'instruction
<xsl:apply-templates> traite tous les fils du nœud
<xsl:apply-templates> traite tous les fils du nœud
courant, y compris les nœuds textuels
courant, y compris 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>
LES REGLES DE
LES REGLES DE
TRANSFORMATION
TRANSFORMATION
9/119/11Il existe trois façons d’appeler un template
Il 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).
LES REGLES DE
LES REGLES DE
TRANSFORMATION
TRANSFORMATION
10/1110/11Sélection d’une règle
Sélection d’une règle
parmi plusieurs règles
parmi plusieurs règles
candidates
candidates
:
:
Il existe des priorités implicites qui permettent au
Il existe des priorités implicites qui permettent au
processeur de choisir
processeur 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 prioritairePriorité - 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 motifs
Priorité 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)
LES REGLES DE
LES REGLES DE
TRANSFORMATION
TRANSFORMATION
11/1111/11Les modes
Les modes
:
:
Leur raison d’être réside dans le fait qu’un même nœud
Leur raison d’être réside dans le fait qu’un même nœud
peut être traité par plusieurs règles (un chapitre par
peut être traité par plusieurs règles (un chapitre par
exemple peut être traité une fois pour construire l’index
exemple peut être traité une fois pour construire l’index
et une autre fois pour publier le contenu).
et une autre fois pour publier le contenu). Pour distinguer Pour distinguer les deux règles, on les distinguera par mode.
les deux règles, on les 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>
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
Une fois déclarée, la valeur d’une variable ne peut
être modifiée par la suite.
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:variable> <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é
paramètre est qu’un paramètre peut être passé
comme argument à un template. Cela se fait de la
comme argument à un template. Cela se fait de la
manière suivante :
manière suivante :
<xsl:param name="MIN">0</xsl:param> <xsl:param name="MIN">0</xsl:param> <xsl:call-template name="annee"> <xsl:call-template name="annee"><xsl:with-param name="MIN" select="$MIN+1"/>
</xsl:call-template> </xsl:call-template>
FONCTIONS XSLT
FONCTIONS XSLT
1/21/2XSLT
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 motif
Ce 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 ci-dessous :
caractères spéciaux définis dans le tableau ci-dessous :
Exemples Exemples : : <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 ’)"/>