我正在尝试合并一个substring-before(获取不带'-'的数字)和一个format-number,但发送错误。
我尝试这个XSL:
<fo:block text-align="right" margin-right="3px" margin-top="5px">
<xsl:value-of select="format-number(substring-before(/DTE/pdf/dscDistri/text(), '-'), '#.###,00', 'CL')"/>
</fo:block>
XML:
<dscDistri>4956,00-</dscDistri>
<dscFinan>1239,00-</dscFinan>
<dscEspec>194,00-</dscEspec>
答案 0 :(得分:0)
可能是您使用了错误的格式。 尝试 #,###。00代替#。###,00
答案 1 :(得分:0)
这是欧盟对美国表示法的典型问题。一种解决方案是两次使用translate
函数。首先,使用它将字符串转换为美国格式。然后应用format-string(..)
。最后将字符串转换回EU表示法。
这可能看起来像这样:
<fo:block text-align="right" margin-right="3px" margin-top="5px">
<xsl:value-of select="translate(format-number(translate(substring-before(DTE/pdf/dscDistri/text(), '-'),',.','.,'), '#,###.00'),'.,',',.')"/>
</fo:block>
输出:
<fo:block...>4.956,00</fo:block>
这很丑陋,但是XSLT规范是以美国为中心的。因此,这对欧盟人民来说是一个糟糕的局面。