Fonction format-number() | |
Prend un nombre et le formate en chaîne. | |
Entrées | |
Le nombre à formater et la chaîne de format sont obligatoires. Le troisième argument correspond au nom facultatif d'un format décimal ; si ce troisième argument n'est pas indiqué, le format décimal par défaut est utilisé. |
|
Sortie | |
Le nombre, formaté selon les règles fournies par les autres arguments. Les caractères spéciaux utilisés dans le deuxième argument sont les suivants :
Le troisième argument, le cas échéant, doit correspondre au nom d'un élément <xsl:decimal-format>. L'élément <xsl:decimal-format> permet de définir le caractère à utiliser pour le point décimal et le séparateur de groupes, la chaîne à utiliser pour représenter l'infini ainsi que d'autres options de formatage. Voir |
|
Définie dans | |
XSLT section 12.3, Formatage des nombres. |
|
Exemple | |
La feuille de style suivante utilise la fonction format-number() de différentes manières : <?xml version="1.0" encoding="ISO-8859-1" ?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:months="Lookup table for month names"> <xsl:output method="text"/> <months:name sequence="01">January</months:name> <months:name sequence="02">February</months:name> <months:name sequence="03">March</months:name> <months:name sequence="04">April</months:name> <xsl:variable name="newline"> <xsl:text> </xsl:text> </xsl:variable> <xsl:decimal-format name="f1" decimal-separator=":" grouping-separator="/"/> <xsl:decimal-format name="f2" infinity="Really, really big" NaN="[not a number]"/> <xsl:template match="/"> <xsl:value-of select="$newline"/> <xsl:text>Tests of the format-number() function:</xsl:text> <xsl:value-of select="$newline"/> <xsl:value-of select="$newline"/> <xsl:text> format-number(528.3, '#.#;-#.#')=</xsl:text> <xsl:value-of select="format-number(528.3, '#.#;-#.#')"/> <xsl:value-of select="$newline"/> <xsl:text> format-number(528.3, '0,000.00;-0,000.00')=</xsl:text> <xsl:value-of select="format-number(528.3, '0,000.00;-0,000.00')"/> <xsl:value-of select="$newline"/> <xsl:text> format-number(-23528.3, '$#,###.00;($#,###.00)')=</xsl:text> <xsl:value-of select="format-number(-23528.3, '$#,###.00;($#,###.00)')"/> <xsl:value-of select="$newline"/> <xsl:text> format-number(1528.3, '#/###:00', 'f1')=</xsl:text> <xsl:value-of select="format-number(1528.3, '#/###:00;-#/###:00', 'f1')"/> <xsl:value-of select="$newline"/> <xsl:text> format-number(1 div 0, '###,###.00', 'f2')=</xsl:text> <xsl:value-of select="format-number(1 div 0, '###,###.00', 'f2')"/> <xsl:value-of select="$newline"/> <xsl:text> format-number(blue div orange, '#.##', 'f2')=</xsl:text> <xsl:value-of select="format-number(blue div orange, '#.##', 'f2')"/> <xsl:value-of select="$newline"/> <xsl:value-of select="$newline"/> <xsl:for-each select="report/month"> <xsl:text> </xsl:text> <xsl:value-of select="document('')/*/months:name[@sequence=current()/@sequence]"/> <xsl:text> - </xsl:text> <xsl:value-of select="format-number(miles-flown, '##,###')"/> <xsl:text> miles flown, </xsl:text> <xsl:value-of select="format-number(miles-earned, '##,###')"/> <xsl:text> miles earned.</xsl:text> <xsl:value-of select="$newline"/> <xsl:text> (</xsl:text> <xsl:value-of select="format-number(miles-flown div sum(//miles-flown), '##%')"/> <xsl:text> of all miles flown, </xsl:text> <xsl:value-of select="format-number(miles-earned div sum(//miles-earned), '##%')"/> <xsl:text> of all miles earned.)</xsl:text> <xsl:value-of select="$newline"/> <xsl:value-of select="$newline"/> </xsl:for-each> <xsl:text> Total miles flown: </xsl:text> <xsl:value-of select="format-number(sum(//miles-flown), '##,###')"/> <xsl:text>, total miles earned: </xsl:text> <xsl:value-of select="format-number(sum(//miles-earned), '##,###')"/> </xsl:template> </xsl:stylesheet> Ce document XML est utilisé avec la feuille de style : <?xml version="1.0"?> <report> <title>Miles Flown in 2001</title> <month sequence="01"> <miles-flown>12379</miles-flown> <miles-earned>35215</miles-earned> </month> <month sequence="02"> <miles-flown>32857</miles-flown> <miles-earned>92731</miles-earned> </month> <month sequence="03"> <miles-flown>19920</miles-flown> <miles-earned>76725</miles-earned> </month> <month sequence="04"> <miles-flown>18903</miles-flown> <miles-earned>31781</miles-earned> </month> </report> L'exécution de cette feuille de style permet d'obtenir les résultats suivants : Tests of the format-number() function: format-number(528.3, '#.#;-#.#')=528.3 format-number(528.3, '0,000.00;-0,000.00')=0,528.30 format-number(-23528.3, '$#,###.00;($#,###.00)')=($23,528.30) format-number(1528.3, '#/###:00', 'f1')=1/528:30 format-number(1 div 0, '###,###.00', 'f2')=Really, really big format-number(blue div orange, '#.##', 'f2')=[not a number] January - 12,379 miles flown, 35,215 miles earned. (15% of all miles flown, 15% of all miles earned.) February - 32,857 miles flown, 92,731 miles earned. (39% of all miles flown, 39% of all miles earned.) March - 19,920 miles flown, 76,725 miles earned. (24% of all miles flown, 32% of all miles earned.) April - 18,903 miles flown, 31,781 miles earned. (22% of all miles flown, 13% of all miles earned.) Total miles flown: 84,059, total miles earned: 236,452 Ces quelques exemples montrent certaines des options de formatage disponibles les plus complexes, accompagnées de références aux éléments <xsl:decimal-format> de la feuille de style. La dernière section présente une utilisation plus courante de la fonction format-number : le formatage de valeurs données ou calculées à partir d'un document XML. |