我刚开始使用xslt并希望将值“0000011287000”转换为“1,1287000”。所以,基本上最后7位数是带小数分隔符的小数','。
如果值为'0000007748300',则必须返回'0,7748300'。
我尝试在xslt 2.0中使用format-number(),它适用于前一种情况但不适用于后者,正如预期的那样,因为它返回'7748300'。
号格式($值, '#,#######')
我的下一个想法是将数字拆分并与小数分隔符连接,这可能是一种丑陋的方式。所以,试着看看是否有可以使用format-number()本身完成的事情。
答案 0 :(得分:1)
我会将输入乘以1E-7
,然后使用format-number:
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
<xsl:decimal-format decimal-separator="," grouping-separator="."/>
<xsl:template match="data">
<xsl:copy>
<xsl:value-of select="format-number(. * 1E-7, '0,0000000')"/>
</xsl:copy>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:transform>
转换
<root>
<data>0000011287000</data>
<data>0000007748300</data>
</root>
到
<root>
<data>1,1287000</data>
<data>0,7748300</data>
</root>