xslt – xpath:number为“0”返回false

我有一个xsl:变量,可以是空字符串或数字.所以我评估它是这样的:

<xsl:if test="number($var)"><node att="{number($var)}" /></xsl:if>

如果var是空字符串,则此方法有效,但如果var为0,则效果相同:

从-2到2:

<node att="-2" />
<node att="-1" />
<node att="1" />
<node att="2" />

这是一个错误吗?是否有不同版本的数字函数也可以捕获0?我真的必须在我的测试语句中添加或$var =’0’吗?

它取自 XPath test if node value is number
根据 NaN测试值:

<xsl:if test="string(number(myNode)) != 'NaN'">
    <!-- myNode is a number -->
</xsl:if>

这是一个较短的版本:

<xsl:if test="number(myNode) = myNode">
    <!-- myNode is a number -->
</xsl:if>

<xsl:if test="number(0)">

表达式number(0)被计算为布尔值false() – 因为根据定义

boolean(0)为false()

相关文章
相关标签/搜索