Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xslt xpath:number为“0”返回false;0“;_Xslt_Xpath_Numbers_Xslt 1.0 - Fatal编程技术网

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)
is
false()

您想要的

<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