Xslt xpath:number为“0”返回false;0“;
我有一个Xslt xpath:number为“0”返回false;0“;,xslt,xpath,numbers,xslt-1.0,Xslt,Xpath,Numbers,Xslt 1.0,我有一个xsl:variable,可以是空字符串或数字。所以我这样评价它: <xsl:if test="number($var)"><node att="{number($var)}" /></xsl:if> 这是虫子吗?是否有另一个版本的number函数也可以捕获0?我真的必须将或$var='0'添加到我的测试语句中吗?它取自 根据以下各项测试该值: 这是一个较短的版本: <xsl:if test="number(myNode) = m
xsl:variable
,可以是空字符串或数字。所以我这样评价它:
<xsl:if test="number($var)"><node att="{number($var)}" /></xsl:if>
这是虫子吗?是否有另一个版本的number
函数也可以捕获0
?我真的必须将或$var='0'
添加到我的测试
语句中吗?它取自根据以下各项测试该值:
这是一个较短的版本:
<xsl:if test="number(myNode) = myNode">
<!-- myNode is a number -->
</xsl:if>
表达式编号(0)的计算结果为布尔值false()--因为根据定义
布尔值(0)为false()这完全符合以下条件:
<xsl:if test="number($var) = number($var)">
<node att="{number($var)}" />
</xsl:if>
number($x) = number($x)
根据定义,boolean(0)
isfalse()
您想要的:
<xsl:if test="number($var) = number($var)">
<node att="{number($var)}" />
</xsl:if>
number($x) = number($x)
是true()
如果$x
不能强制转换为一个数字,则上述比较的两侧计算为NaN
,根据定义NaN
不等于任何值,包括NaN
注意:
<xsl:if test="number($var) = number($var)">
<node att="{number($var)}" />
</xsl:if>
number($x) = number($x)
如果要检查$var
是否为整数,请使用:
<xsl:if test="floor($var) = $var">
<node att="{$var}" />
</xsl:if>
或者,或者:
<xsl:if test="not(translate($var, '0123456789', ''))">
<node att="{$var}" />
</xsl:if>
在XPath 2.0中,尝试使用表达式,如$var castable as xs:integer
或$var castable as xs:double