3

我用我的 xslt 解析一个 xml 并将结果作为一个 xml。

我需要用撇号格式化数字作为 tousand、百万等的分隔符...

例如:1234567 = 1'234'567

现在的问题是我如何把这些撇号放在那里?

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

这不起作用,因为撇号本身已经在分隔格式的开头。

有没有一个简单的解决方案(也许像在c#中一样转义撇号?

4

2 回答 2

2

答案取决于您使用的是 1.0 还是 2.0。

在 2.0 中,您可以通过将字符串分隔符加倍(例如 'it''s dark')来转义字符串分隔符,并且可以使用 XML 实体(例如&quot;. 所以你可以写:

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

在 1.0 中,您可以使用 XML 实体对属性分隔符进行转义,但无法对字符串分隔符进行转义。所以你可以切换你的分隔符并使用

<xsl:value-of select='format-number(/path/to/number, "###&apos;###&apos;###&apos;###")' />

另一种方法 - 可能更简单 - 是将字符串放入变量中:

<xsl:variable name="picture">###'###'###'###</xsl:variable>
<xsl:value-of select="format-number(/path/to/number, $picture)" />
于 2012-08-09T14:47:44.073 回答
1

经过一番研究,我们想出了这个解决方案:

<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, "###&apos;###&apos;###", "ch")'/>
     ...
于 2012-08-10T06:25:28.000 回答