<xsl:decimal-format> |
Diese Anweisung definiert ein Zahlenformat, das beim Schreiben numerischer Werte in das Ausgabedokument verwendet werden soll. Besitzt das Element <decimal-format> keinen Namen (name), so wird das für alle Ausgaben gültige Standardzahlenformat verwendet. Wenn hingegen ein Zahlenformat benannt ist, kann man mit Hilfe der Funktion format-number() darauf verweisen.
Kategorie
Element der obersten Ebene
Obligatorische Attribute
Keine
Optionale Attribute
name Weist dem Format einen Namen zu. decimal-separator Dieses Attribut definiert das Zeichen (meist ein Punkt oder ein Komma), das als Dezimalzeichen verwendet wird. Dieses Zeichen wird sowohl im Format-String als auch in der Ausgabe verwendet. Der Standardwert ist der Punkt ( . ). grouping-separator Dieses Attribut definiert das Zeichen (meist ein Punkt oder ein Komma), das als Tausendertrennzeichen verwendet wird. Dieses Zeichen wird sowohl im Format-String als auch in der Ausgabe verwendet. Der Standardwert ist ein Komma ( , ). infinity Dieses Attribut definiert den String, der unendlich repräsentiert. Beachten Sie, dass die Nummerierungsmerkmale von XSLT sowohl positiv unendlich als auch negativ unendlich unterstützen. Dieser String wird nur in der Ausgabe verwendet. Der Standardwert ist der String "Infinity". minus-sign Definiert das als Minuszeichen verwendete Zeichen. Dieses Zeichen wird nur in der Ausgabe verwendet. Der Standardwert ist der Bindestrich ( - , #x2D). NaN Dieses Attribut definiert den String, der angezeigt wird, wenn es sich beim zu formatierenden Wert nicht um eine Zahl handelt. Dieser String wird nur in der Ausgabe verwendet. Der Standardwert ist der String "NaN" (für 'Not a Number'). percent Definiert das als Prozentzeichen verwendete Zeichen. Dieses Zeichen wird sowohl im Format-String als auch in der Ausgabe verwendet. Der Standardwert ist das Prozentzeichen ( % ). per-mille Definiert das als Promillezeichen verwendete Zeichen. Dieses Zeichen wird sowohl im Format-String als auch in der Ausgabe verwendet. Der Standardwert ist das Unicode-Promillezeichen (#x2030). zero-digit Dieses Attribut definiert das Zeichen, das für die Ziffer Null zu verwenden ist. Dieses Zeichen wird sowohl im Format-String als auch in der Ausgabe verwendet. Der Standardwert ist die Ziffer Null ( 0 ). digit Dieses Attribut definiert das Zeichen, das im Format-String als Platzhalter für eine Ziffer verwendet wird. Der Standardwert ist das Nummernzeichen ( # ). pattern-separator Hiermit wird das Zeichen definiert, das zur Abgrenzung der positiven und negativen Untermuster in einem Muster dient. Der Standardwert ist das Semikolon ( ; ). Dieses Zeichen wird nur im Format-String verwendet.
Inhalt
Keiner. <xsl:decimal-format> ist ein leeres Element.
Übergeordnetes Element
<xsl:decimal-format> ist ein Element der obersten Ebene und kann nur dem Element <xsl:stylesheet> untergeordnet werden.
Definition
XSLT-Abschnitt 12.3, Zahlenformatierung.
Beispiel
Hier ein Stylesheet, das zwei Dezimalformate (<decimal-format>) definiert:
    <?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>
Das Stylesheet wird auf das folgende Dokument angewendet:
    <?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>
Hier das Ergebnis, wenn Sie das Dokument mit diesem Stylesheet verarbeiten:
    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