2010-09-21 87 views
7

Tôi đang cố gắng để định dạng này và các yếu tố khác nhau, vì vậy nó sẽ trông như thế này 2590:XSLT định dạng số với dấu phẩy

<Add_Amount>2,59</Add_Amount> 

Làm nó như thế này:

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

.. ..

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

Và đầu ra đi ra NaN. Bất kỳ trợ giúp nào được đánh giá cao.

Cảm ơn.

// Daniel

Trả lời

11

Sử dụng:

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

chuyển đổi này:

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

khi áp dụng trên tài liệu XML cung cấp:

<Add_Amount>2,59</Add_Amount> 

tạo ra kết quả mong muốn:

2,590 

Vấn đề với mã của bạn là rằng 2,59 không phải là một số hợp lệ và phải được chuyển đổi sang như vậy, trước khi đi qua này như là đối số đầu tiên của format-number().

0

Bạn chỉ có thể làm như thế này:

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

này trả về NaN – 8bitjunkie

3

Cuộc gọi thêm để translate() trong câu trả lời Dimitre Novatchev dường như không cần thiết. Việc sử dụng <xsl:decimal-format> nên là đủ, như thế này:

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

này là sai: trả về NaN – JohannThor

Các vấn đề liên quan