2010-09-21 54 views
7

estoy tratando de formatear este y otros elementos iguales, por lo que se vería como este 2590:XSLT formato de número con coma

<Add_Amount>2,59</Add_Amount> 

Haciéndolo de esta manera:

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

.. ..

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

Y la salida sale NaN. Cualquier ayuda es muy apreciada.

Gracias.

// Daniel

Respuesta

11

Uso:

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

Esta transformación:

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

cuando se aplica en el documento XML proporcionado:

<Add_Amount>2,59</Add_Amount> 

produce el resultado deseado:

2,590 

El problema con el código es que 2,59 no es un número válido y deben ser convertidos a los mismos, antes de pasar esto como el primer argumento de format-number().

0

Usted puede simplemente hacer esto como:

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

Esto devuelve NaN – 8bitjunkie

3

La llamada extra para translate() en la respuesta de Dimitre Novatchev parece innecesario. El uso de <xsl:decimal-format> debería ser suficiente, así:

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

Esto está mal: devuelve NaN – JohannThor

Cuestiones relacionadas