<xsl:decimal-format>  
Définit un format numérique à utiliser lors de l'écriture de valeurs numériques dans le document de sortie. Si l'élément <decimal-format> ne possède pas de name, il est considéré comme le format numérique par défaut à utiliser pour toutes les sorties. En revanche, si un format numérique est nommé, il peut être référencé à partir de la fonction format-number().
 
Catégorie

Elément de niveau supérieur

 
Attributs obligatoires

Aucun.

 
Attributs facultatifs
name
Affecte un nom à ce format.

decimal-separator
Définit le caractère (généralement soit un point, soit une virgule) utilisé comme point décimal. Ce caractère est utilisé aussi bien dans la chaîne de format que dans la sortie. La valeur par défaut est le point ( . ).

grouping-separator
Définit le caractère (généralement soit un point, soit une virgule) utilisé comme séparateur de milliers. Ce caractère est utilisé aussi bien dans la chaîne de format que dans la sortie. La valeur par défaut est la virgule ( , ).

infinity
Définit la chaîne à utiliser pour représenter l'infini. Les mécanismes numériques XSLT prennent en charge l'infini positif et l'infini négatif. Cette chaîne n'est utilisée que dans la sortie. La valeur par défaut est la chaîne " Infinity ".

signe moins
Définit le caractère utilisé comme signe moins. Ce caractère n'est utilisé que dans la sortie. La valeur par défaut est le tiret ( - , #x2D).

NaN
Définit la chaîne affichée lorsque la valeur à formater n'est pas un nombre. Cette chaîne n'est utilisée que dans la sortie ; la valeur par défaut est la chaîne " NaN ".

percent
Définit le caractère utilisé comme signe de pourcentage. Ce caractère est utilisé aussi bien dans la chaîne de format que dans la sortie. La valeur par défaut est le signe pourcent ( % ).

per-mille
Définit le caractère utilisé comme signe pour mille. Ce caractère est utilisé aussi bien dans la chaîne de format que dans la sortie. La valeur par défaut est le caractère Unicode pour mille (#x2030).

zero-digit
Définit le caractère utilisé pour le chiffre zéro. Ce caractère est utilisé aussi bien dans la chaîne de format que dans la sortie. La valeur par défaut est le chiffre zéro ( 0 ).

digit
Définit le caractère utilisé dans la chaîne de format pour représenter un chiffre. La valeur par défaut est le caractère du signe numérique ( # ).

pattern-separator
Définit le caractère utilisé pour séparer les sous-motifs positifs et négatifs d'un motif. La valeur par défaut est le point virgule ( ; ). Ce caractère n'est utilisé que dans la chaîne de format.

 
Contenu

Aucun. <xsl:decimal-format> est un élément vide.

 
Apparaît dans

L'élément <xsl:decimal-format> est un élément de niveau supérieur qui ne peut apparaître que sous forme d'enfant de l'élément <xsl:stylesheet>.

 
Défini dans

XSLT section 12.3, Formatage des nombres.

 
Exemple

La feuille de style suivante définit deux éléments <decimal-format> :

<?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 <decimal-format> element:</xsl:text>

    <xsl:value-of select="$newline"/>
    <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>

La feuille de style est appliquée au document suivant :

<?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>

Une fois le document XML traité à l'aide de la feuille de style, les résultats sont les suivants :


Tests of the <decimal-format> element:

   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