我需要XSLT转换才能赚钱。
在输入XML数据中,价格为数字:
<prices>
<price>1234</price>
<price>1234.5</price>
</prices>
我需要在XSLT转换后输出XML,如下所示(捷克格式):
<prices>
<price>1 234,-</price>
<price>1 234,50</price>
</prices>
可以使用XSLT完成吗?非常感谢你。
编辑:我正在使用XSLT 2.0。
答案 0 :(得分:4)
此转换(在两个版本的XSLT中):
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:decimal-format
name="Cz1"
grouping-separator=" "
decimal-separator="_"/>
<xsl:decimal-format
name="Cz2"
grouping-separator=" "
decimal-separator=","/>
<xsl:template match="node()|@*">
<xsl:copy>
<xsl:apply-templates select="node()|@*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="price/text()">
<xsl:value-of select="format-number(., '# ##0,00', 'Cz2')"/>
</xsl:template>
<xsl:template match="price/text()[. = floor(.)]" priority="3">
<xsl:value-of select="format-number(., '# ##0', 'Cz1')"/>
<xsl:text>,-</xsl:text>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档:
<prices>
<price>1234</price>
<price>1234.5</price>
</prices>
生成想要的正确结果:
<prices>
<price>1 234,-</price>
<price>1 234,50</price>
</prices>
答案 1 :(得分:0)
如果样式表具有NumberFormat
对象的实例,则可以将数字呈现为特定于语言环境的货币字符串。您可以使用java.text.NumberFormat.getInstance(Locale locale).getCurrencyInstance()
获取一个。然后将其添加到样式表中,然后离开。
答案 2 :(得分:0)
使用http://www.w3.org/TR/xslt20/#format-number,如
<xsl:decimal-format
name="f1"
grouping-separator=" "
decimal-separator=","/>
<xsl:template match="price">
<xsl:copy>
<xsl:value-of select="format-number(., '# ###0,00', 'f1')"/>
</xsl:copy>
</xsl:template>
我不知道如何以这种方式获得“, - ”。