xsl:format-number中的撇号

时间:2012-08-09 10:36:37

标签: xslt xpath format

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

我需要用撇号格式化数字作为千分之一,百万等的分隔符......

例如:1234567 = 1' 234' 567

现在问题是如何在那里得到这些撇号?

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

这不起作用,因为撇号本身已经划定了格式的开头。

是否有一个简单的解决方案(可能像c#中那样转义撇号?

2 个答案:

答案 0 :(得分:2)

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

在2.0中,您可以通过加倍来转义字符串分隔符(例如“它是黑暗的”),并且可以使用诸如&quot;之类的XML实体来转义属性分隔符。所以你可以写:

<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)" />

答案 1 :(得分: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")'/>
     ...