我用我的 xslt 解析一个 xml 并将结果作为一个 xml。
我需要用撇号格式化数字作为 tousand、百万等的分隔符...
例如:1234567 = 1'234'567
现在的问题是我如何把这些撇号放在那里?
<xsl:value-of select="format-number(/path/to/number, '###'###'###'###')" />
这不起作用,因为撇号本身已经在分隔格式的开头。
有没有一个简单的解决方案(也许像在c#中一样转义撇号?
答案取决于您使用的是 1.0 还是 2.0。
在 2.0 中,您可以通过将字符串分隔符加倍(例如 'it''s dark')来转义字符串分隔符,并且可以使用 XML 实体(例如"
. 所以你可以写:
<xsl:value-of select="format-number(/path/to/number, '###''###''###''###')" />
在 1.0 中,您可以使用 XML 实体对属性分隔符进行转义,但无法对字符串分隔符进行转义。所以你可以切换你的分隔符并使用
<xsl:value-of select='format-number(/path/to/number, "###'###'###'###")' />
另一种方法 - 可能更简单 - 是将字符串放入变量中:
<xsl:variable name="picture">###'###'###'###</xsl:variable>
<xsl:value-of select="format-number(/path/to/number, $picture)" />
经过一番研究,我们想出了这个解决方案:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:decimal-format name='ch' grouping-separator="'" />
<xsl:template match="/">
<xsl:value-of select='format-number(/the/path/of/the/number, "###'###'###", "ch")'/>
...