我用xslt解析xml并将结果作为xml。
我需要用撇号格式化数字作为千分之一,百万等的分隔符......
例如:1234567 = 1' 234' 567
现在问题是如何在那里得到这些撇号?
<xsl:value-of select="format-number(/path/to/number, '###'###'###'###')" />
这不起作用,因为撇号本身已经划定了格式的开头。
是否有一个简单的解决方案(可能像c#中那样转义撇号?
答案 0 :(得分:2)
答案取决于您使用的是1.0还是2.0。
在2.0中,您可以通过加倍来转义字符串分隔符(例如“它是黑暗的”),并且可以使用诸如"
之类的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)" />
答案 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, "###'###'###", "ch")'/>
...