Format-number
Formater les nombres
Appliquer un format décimal en XSL
Exemple de fichier XSL qui utilise le fichier XML: "boutique.xml
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" encoding="ISO-8859-1" />
<xsl:decimal-format name="formatnb" decimal-separator="," grouping-separator=" " />
<xsl:variable name="ttcok">1.196</xsl:variable>
<xsl:template match="/">
<html>
<head><title>Appliquer un format en XSL</title>
<link rel="stylesheet" href="monstyle.css" />
</head>
<body>
<table border="1" width="50%" align="center">
<tr style="background-color:#ffffcc; text-align:center;">
<td>LIBELLE</td>
<td>PRIX HT</td>
<td>PRIX TTC</td>
</tr>
<xsl:for-each select="boutique/article" order-by="+article">
<tr>
<td><xsl:value-of select="libelle" /></td>
<td><xsl:value-of select="format-number(prix,'# ###,00 €','formatnb')" /></td>
<td><xsl:value-of select="format-number(prix*$ttcok,'# ###,00 €','formatnb')" /></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="html" encoding="ISO-8859-1" />
<xsl:decimal-format name="formatnb" decimal-separator="," grouping-separator=" " />
<xsl:variable name="ttcok">1.196</xsl:variable>
<xsl:template match="/">
<html>
<head><title>Appliquer un format en XSL</title>
<link rel="stylesheet" href="monstyle.css" />
</head>
<body>
<table border="1" width="50%" align="center">
<tr style="background-color:#ffffcc; text-align:center;">
<td>LIBELLE</td>
<td>PRIX HT</td>
<td>PRIX TTC</td>
</tr>
<xsl:for-each select="boutique/article" order-by="+article">
<tr>
<td><xsl:value-of select="libelle" /></td>
<td><xsl:value-of select="format-number(prix,'# ###,00 €','formatnb')" /></td>
<td><xsl:value-of select="format-number(prix*$ttcok,'# ###,00 €','formatnb')" /></td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Explication
- grouping-separator : séparateur de millier
- € code numérique qui permet d'afficher le sigle Euro (marche pas avec l'entité €).
- Attention, variable décimal avec un point (et pas une virgule)
- Est utilisé ci-dessus la fonction format-number :
format-number(nom du champ, format, nom de balise spécifiant le format décimal).
- Sous FireFox, pour la gestion de l'espace entre le prix et le sigle Euro, on peut utiliser   qui affiche un espace insécable.
- Le prix TTC est calculé à partir d'une variable (ttcok).
Différents exemples
format-number(5351,"#,###" ) donne comme résultat: "5,351"
format-number(5351, "#.00" ) donne comme résultat: "5351.00"
format-number(53.51, "#.0000" ) donne comme résultat: "53.5100"
format-number(53.51, "0000.0000" ) donne comme résultat: "0053.5100"
format-number(53.51, "0000.####" ) donne comme résultat: "0053.51"
format-number(53.56, "0.0" ) donne comme résultat: "53.6"