第一次SO用户:)
我知道我可以像这样格式化一个数字:
format-number($value, '###,###.00')
但是如果 $value 为零,我想删除点和零。
所以,
37368 -> 37,368
2.666667 -> 2.66
这是否可能仅使用数字格式(看起来不像)或者我必须按照以下方式做一些事情
if (int(value) == value ) {...}
第一次SO用户:)
我知道我可以像这样格式化一个数字:
format-number($value, '###,###.00')
但是如果 $value 为零,我想删除点和零。
所以,
37368 -> 37,368
2.666667 -> 2.66
这是否可能仅使用数字格式(看起来不像)或者我必须按照以下方式做一些事情
if (int(value) == value ) {...}
format-number($value, '###,###.##')
xpath 2.0 包含条件逻辑if..then..else但在更有可能的情况下,您在 xpath 1.0 中,恐怕您将不得不依赖 XSLT 为您执行此操作,即:
<xsl:variable name="myvar">
<xsl:choose>
<xsl:when test="$value > 0">
<xsl:select="format-number($value, '###,###.00')"/>
</xsl:when>
<xsl:otherwise>0</xsl:otherwise>
</xsl:choose>>
</xsl:variable>
..或混合扩展(.NET 可以在本地执行此操作,否则 EXSLT 存在,可能有更多可用选项)
据我所知,没有 xpath 函数可以让你摆脱困境,但我可能会错过一些异国情调的东西。