bit*_*ask 4 xslt xpath numbers xslt-1.0
我有一个xsl:variable可以是空字符串或数字.所以我评估它是这样的:
<xsl:if test="number($var)"><node att="{number($var)}" /></xsl:if>
Run Code Online (Sandbox Code Playgroud)
这是有效的,如果var是空字符串,但它具有相同的效果,如果var是0:
从-2到2:
<node att="-2" />
<node att="-1" />
<node att="1" />
<node att="2" />
Run Code Online (Sandbox Code Playgroud)
这是一个错误吗?是否有不同版本的number功能也可以捕获0?我真的要加上or $var = '0'我的test陈述吗?
这完全符合XPath规范:
根据定义boolean(0)是false()
你想要:
<xsl:if test="number($var) = number($var)">
<node att="{number($var)}" />
</xsl:if>
Run Code Online (Sandbox Code Playgroud)
说明:
number($x) = number($x)
Run Code Online (Sandbox Code Playgroud)
是true()什么时候$x可以转换为数字.
如果$x不能转换为数字,则上述comaparison的两侧都会评估NaN,并且根据定义NaN不等于任何值,包括NaN.
注意:
如果你想检查是否$var是整数,那么使用:
<xsl:if test="floor($var) = $var">
<node att="{$var}" />
</xsl:if>
Run Code Online (Sandbox Code Playgroud)
或者,或者:
<xsl:if test="not(translate($var, '0123456789', ''))">
<node att="{$var}" />
</xsl:if>
Run Code Online (Sandbox Code Playgroud)