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