Fonction format-number
Convertit des nombres en chaînes. La conversion est le résultat de la mise en forme du nombre spécifié dans le premier argument (number) à l'aide du format spécifié dans le deuxième argument (string) et selon les règles définies dans le format décimal nommé dans le troisième argument facultatif (string). Si le troisième argument, à savoir le nom du format décimal, est omis, le format décimal par défaut est utilisé. Cette fonction et l'élément <xsl:decimal-format> sont conçus pour être utilisés conjointement.
string format-number(number, string, string?)
Notes
Le premier argument spécifie la valeur d'entrée. Par exemple, le nombre 5351.
Le deuxième argument spécifie le modèle de format. Par exemple, la chaîne « ###.###,00 ».
Le troisième argument est un nom de format décimal facultatif. Cela permet d'utiliser n'importe quel caractère dans la chaîne de modèle de format ; le caractère se voit affecter un rôle dans l'élément <xsl:decimal-format>. Un nom de format décimal courant est european et permet d'inverser les rôles de la virgule et du point par rapport à la valeur par défaut.
Dans le modèle de format, les caractères suivants sont pris en charge : « . », « , », « # », « % », « 0 » et le caractère Unicode « pour mille » (#x2030). Le caractère « # » permet de décrire des entiers. Les caractères « . » et « , » permettent de décrire l'emplacement et le type de ponctuation. Le caractère « 0 » permet d'insérer un 0 avant et après le caractère « . » là où aucun chiffre ne devrait normalement apparaître, comme dans 00.3 ou 3.00. Lorsque les chiffres à droite de la virgule décimale sont tronqués, le nombre est arrondi. Le nombre à gauche de la virgule décimale n'est jamais tronqué.
Les chaînes de valeur d'entrée et de modèle de format doivent être toutes deux présentes, sinon une erreur se produit. Si la valeur d'entrée ne peut pas être reconnue comme nombre selon les règles de la fonction number(), la fonction format-number retourne une NaN. Si la chaîne de modèle de format n'est pas une chaîne de modèle valide, la fonction retourne la valeur d'entrée inchangée.
Le nom de format décimal, le cas échéant, représente le nom d'un format décimal spécifié dans un élément <xsl:decimal-format>. Le nom de format décimal doit être un nom qualifié. Si vous spécifiez un nom de format décimal dans la fonction, la feuille de style doit contenir un élément <xsl:decimal-format> portant le même nom.
L'élément <xsl:decimal-format> peut remplacer le modèle de mise en forme des nombres par défaut. L'élément <xsl:decimal-format> suit les modèles de spécification de mise en forme de la classe java.text.DecimalFormat. Pour des exemples d'utilisation de la fonction format-number avec <xsl:decimal-format>, voir Élément <xsl:decimal-format>.
Exemples
Les lignes XSLT suivantes retournent « 24.535,20 » :
<xsl:decimal-format name="european" decimal-separator=',' grouping-separator='.' />
<xsl:value-of select="format-number(24535.2, '###.###,00', 'european')"/>
L'appel de fonction suivant retourne « 5,351 » :
format-number(5351,"#,###")
L'appel de fonction suivant retourne « 5351,00 » :
format-number(5351, "#.00")
L'appel de fonction suivant retourne « 53,5100 » :
format-number(53.51, "#.0000")
L'appel de fonction suivant retourne « 0053.5100 » :
format-number(53.51, "0000.0000")
L'appel de fonction suivant retourne « 0053.51 » :
format-number(53.51, "0000.####")
L'appel de fonction suivant retourne « 53,6 » :
format-number(53.56, "0.0")
Pour un exemple complet de l'application de cette fonction à des données XML à l'aide d'une feuille de style XSLT, voir Exemple de <xsl:decimal-format>.