xsl:decimal-format

(Auszug aus "XSLT 2.0 & XPath 2.0" von Frank Bongers, Kapitel 6.)

A | B | C | D | E | F | G | H | I | J | K | L | M | N | O | P | Q | R | S | T | U | V | W | X | Y | Z

 

xsl:decimal-format zählt zu den Toplevel-Elementen. Die Deklaration stellt der XSLT-Funktion format-number() eine namentlich aufrufbare Sammlung funktionaler Zeichen und Ersetzungsstrings zur Umwandlung von Zahlen in formatierte Ausgabestrings zur Verfügung.

Klassifizierung Deklaration
Funktionsgruppe Ausgabeformatdefinition
Einführung XSLT 1.0

Position im Stylesheet und erlaubte Inhalte:

xsl:decimal-format tritt als Toplevel-Element in beliebiger Anzahl als unmittelbares Kindelement von xsl:stylesheet auf. Es darf nicht innerhalb von Templatekörpern verwendet werden. Das Element ist stets leer.

Attribute:

Für xsl:decimal-format gelten die Standardattribute. Zusätzlich besitzt die Deklaration eine Reihe von optionalen Attributen mit jeweils vordefinierten Defaultwerten.

decimal-separator

Wert

char

Verwendung

Optional

Einführung

XSLT 1.0

Das decimal-separator-Attribut definiert das Zeichen, das im Ausgabestring als Dezimaltrennsymbol zwischen Vor- und Nachkommestellen gesetzt werden soll. Der Defaultwert ist nach anglo-amerikanischer Konvention der Punkt ».«.

digit

Wert

char

Verwendung

Optional

Einführung

XSLT 1.0

Das im digit-Attribut definierte Zeichen dient im Formatpattern als Platzhalter für Stellen, die im Ausgabestring entfallen können, falls ihnen keine Ziffer größer 0 zugeordnet werden kann. Defaultzeichen ist »#«. Wird das Ziffernsymbol im Formatstring nach dem Dezimalseparator verwendet, so entfallen diejenigen Stellen, die folgende Nullen ergeben würden. Existieren mehr Nachkommastellen als im Formatierungsstring vorgesehen, so entfallen diese – die letzte zur Ausgabe vorgesehene Stelle wird entsprechend gerundet.

grouping-separator

Wert

char

Verwendung

Optional

Einführung

XSLT 1.0

Das grouping-separator-Attribut definiert das Zeichen, das im Ausgabestring als Trenner zwischen Zifferngruppen erscheinen soll, z.B. als Tausendertrennzeichen. Defaultwert ist, gemäß anglo-amerikanischer Formatierung, das Komma »,«.

Anmerkung: Eine Gruppierung muss nicht notwendigerweise in Dreiergruppen erfolgen, sondern kann im Vorkommabereich des Formatierungsmusters von format-number() beliebig definiert werden.

infinity

Wert

string

Verwendung

Optional

Einführung

XSLT 1.0

Das infinity-Attribut definiert die Zeichenkette, die als Ausgabestring stellvertretend für den Wert »unendlich« erscheinen soll. Defaultwert ist der String »infinity«.

minus-sign

Wert

char

Verwendung

Optional

Einführung

XSLT 1.0

Das minus-sign-Attribut definiert das Zeichen, das im Ausgabestring als Vorzeichen einer negativen Zahl verwendet werden soll. Defaultwert ist das Minuszeichen »-«.

name

Wert

QName

Verwendung

Optional

Einführung

XSLT 1.0

Das name-Attribut dient dazu, eine Dezimalformat-Deklaration zu benennen. Wird ein Bezeichner vergeben, so muss es sich um einen QName handeln. Wird das name-Attribut nicht eingesetzt, so tritt die Dezimalformat-Deklaration anstelle der Default-Deklaration. Die Definition wird dann in dem Fall verwendet, dass format-number() ohne Angabe eines Namens einer Dezimalformat-Deklaration aufgerufen wird.

NaN

Wert

string

Verwendung

Optional

Einführung

XSLT 1.0

Das NaN-Attribut definiert die Zeichenkette, die als Ausgabewert stellvertretend für den Wert NaN (Not a Number) erscheinen soll. Defaultwert ist der String »NaN«.

pattern-separator

Wert

char

Verwendung

Optional

Einführung

XSLT 1.0

Das pattern-separator-Attribut definiert das Zeichen, das innerhalb des Formatpatterns die beiden potenziellen Subpattern zur Formatierung positiver und negativer Zahlen trennt. Defaultwert ist das Semikolon »;«.

percent

Wert

char

Verwendung

Optional

Einführung

XSLT 1.0

Das percent-Attribut definiert das Zeichen, das im Ausgabestring einen Prozentwert symbolisieren soll. Defaultwert ist »%«. Die Zahl wird vor der Ausgabe mit 100 multipliziert.

per-mille

Wert

char

Verwendung

Optional

Einführung

XSLT 1.0

Das per-mille-Attribut definiert das Zeichen, das im Ausgabestring einen Promillewert symbolisieren soll. Defaultwert ist »‰« (in der Deklaration als Unicode Character Entity ‰ eingesetzt). Die Zahl wird vor der Ausgabe mit 1000 multipliziert.

zero-digit

Wert

char

Verwendung

Optional

Einführung

XSLT 1.0

Das im zero-digit-Attribut definierte Zei­chen dient im Formatpattern als Platzhalter für Stellen, die im Ausgabestring mit Nullen aufgefüllt werden sollen, falls ihnen keine Ziffer größer 0 zugeord­net werden kann. Defaultzeichen ist »0«. Ein Nullziffernsymbol kann verwen­det werden, um bei der Ausgabe führende und folgende Nullen zu erzwingen.

Verwendungszweck:

Mit Hilfe der Deklaration xsl:decimal-format ist es möglich, den Zeichensatz für Formatierungsmuster und die Ausgabestrings für Überlauf (±INF) oder verbotene Operationen (NaN) zu definieren. Zur Umsetzung einer Formatierung kann die gewünschte Deklaration aus der XSLT-Funktion format-number() heraus über ihren Namen angesprochen werden.

Das Formatierungsmuster bestimmt die eigentliche Formatierung
In der Deklaration werden lediglich die Zeichen bzw. Ersetzungs­strings für die Formatierung vereinbart. Sie hat also keinen unmittelbaren Einfluss auf das Aussehen des Ausgabestrings, beispielsweise in Bezug auf die Stellenzahl. Das hierfür zuständige Formatierungsmuster wird als zwei­ter Parameter der Funktion format-number() jeweils übergeben.

Die Funktion format-number():
Die Übergabeparameter der XSLT-Funktion format-number() sind – rein formal – folgendermaßen zu setzen:

format-number($eingabezahl, $formatierungsmuster, $formatdefinition?)

Aus dem ersten Parameter $eingabezahl, einem XPath-Ausdruck, ergibt sich die zu formatie­rende Zahl. Der obligatorische zweite Parameter $formatierungsmuster enthält das Formatierungs­muster zur Umwandlung der Zahl in den gewünschten Ausgabestring. Der dritte Parameter ist optional und bezeichnet namentlich eine mit xsl:decimal-format vereinbarte Dezimalformat-Deklaration.

Innerhalb des Formatierungsmusters eines Funktionsaufrufes werden die in der bezeichneten Deklaration vereinbarten Zeichen verwendet. Fehlt der dritte Parameter, so gelten die defaultmäßig vereinbarten Zeichen.

Beispiele:

Beispiel 1 – Deklaration für westeuropäische Dezimalausgabe:

<xsl:decimal-format name="westeuropa" decimal-separator="," grouping-separator="."/>

Dies kann folgendermaßen aufgerufen werden:

format-number(sum(//wert),'#.###.##0,00','westeuropa')

In Zusammenhang mit der obigen Deklaration ergeben sich mit wechselnden Eingabezahlen und Formatierungsmustern folgende Ausgabe­strings:

10000.23 mit '#.###.##0,00' ergibt 1.000.023,00

400.2307 mit '#.###.##0,00' ergibt 400,23

Beispiel 2 – Anwendung eines Präfixes:

Mit einem Präfix kann eine Zahl als Preisangabe formatiert werden:

400.2307 mit 'Euro #.###.##0,00' ergibt Euro 400,23

Beispiel 3 – Regionalisierung:

Auch die restlichen Attribute können bei Bedarf regionalisiert werden.

<xsl:decimal-format name="de-westeuropa" decimal-separator="," grouping-separator="." infinity="Ueberlauf" NaN="verbotene Operation"/>

So hat der folgende (fiktive) Aufruf

format-number('hallo','#.###.###,000','de-westeuropa')

als NaN-Ausgabewarnung die vereinbarte Meldung »verbotene Operation« zur Folge, da hier versucht wird, einen String zu formatieren.

format-number(1 div 0,'#.###.###,000','de-westeuropa')"

gibt dagegen für den Wert infinity der Division durch 0 die in der Deklara­tion festgelegte Meldung »Ueberlauf« aus.

Elementdefinition:

XSLT 1.0:

<!-- Category: top-level-element -->
<xsl:decimal-format 
     name = qname 
     decimal-separator = char 
     grouping-separator = char 
     infinity = string 
     minus-sign = char 
     NaN = string 
     percent = char 
     per-mille = char 
     zero-digit = char 
     digit = char 
     pattern-separator = char 
/>

XSLT 2.0:

<!-- Category: declaration -->
<xsl:decimal-format
     name? = qname
     decimal-separator? = char
     grouping-separator? = char
     infinity? = string
     minus-sign? = char
     NaN? = string
     percent? = char
     per-mille? = char
     zero-digit? = char
     digit? = char
     pattern-separator? = char 
/>
Tipp der data2type-Redaktion:
Zum Thema XSLT bieten wir auch folgende Schulungen zur Vertiefung und professionellen Fortbildung an:

Copyright © Galileo Press, Bonn 2008
Für Ihren privaten Gebrauch dürfen Sie die Online-Version ausdrucken.
Ansonsten unterliegt dieses Kapitel aus dem Buch "XSLT 2.0 & XPath 2.0 ― Das umfassende Handbuch" denselben Bestimmungen wie die gebundene Ausgabe: Das Werk einschließlich aller seiner Teile ist urheberrechtlich geschützt. Alle Rechte vorbehalten einschließlich der Vervielfältigung, Übersetzung, Mikroverfilmung sowie Einspeicherung und Verarbeitung in elektronischen Systemen.


Galileo Press, Rheinwerkallee 4, 53227 Bonn