2010-09-21 3 views
7

Je suis en train de formater et dans d'autres éléments aussi bien, il ressemblerait à ceci 2590:format nombre XSLT avec une virgule

<Add_Amount>2,59</Add_Amount> 

Faire comme ceci:

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

.. ..

<xsl:value-of select="translate(format-number(Add_Amount, '#.###,000', 'dkk'), ',', '.')" /> 

Et la sortie sort NaN. Toute aide est grandement appréciée.

Merci.

// Daniel

Répondre

11

Utilisation:

format-number(translate(., ',','.'), '#.###,000', 'd') 

Cette transformation:

<xsl:stylesheet version="1.0" 
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="text"/> 

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

<xsl:template match="/"> 
    <xsl:value-of select= 
    "format-number(translate(., ',','.'), '#.###,000', 'd')"/> 
</xsl:template> 
</xsl:stylesheet> 

lorsqu'il est appliqué sur le document XML fourni:

<Add_Amount>2,59</Add_Amount> 

produit le résultat recherché:

2,590 

Le problème avec votre code est que 2,59 est pas valide et doit être converti en titre, avant de passer cela comme le premier argument de format-number().

0

Vous pouvez simplement faire comme:

<xsl:value-of select="format-number(number, '#,###')"/> 
+0

Ce retourne NaN – 8bitjunkie

3

L'appel supplémentaire à translate() dans la réponse de Dimitre Novatchev semble inutile. L'utilisation de <xsl:decimal-format> devrait être suffisant, comme ceci:

<xsl:decimal-format name="euroFormat" decimal-separator="," grouping-separator="."/> 
<xsl:value-of select="format-number(text(), '###.###,00', 'euroFormat')"/> 
+1

Ceci est faux: renvoie NaN – JohannThor

Questions connexes