加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

布尔值上的xml – test =“”总是返回true

发布时间:2020-12-16 23:50:35 所属栏目:百科 来源:网络整理
导读:为什么 xsl:if test="XPATH to boolean value here".../xsl:if 总是回归真实? 由于boolean在定义时可以是0,1,“false”和“true”,因此测试布尔值的唯一方法是对这些进行字符串比较.这不可能是对的. xsl:if中指定的测试就好像它调用了布尔函数一样.此功能
为什么
<xsl:if test="<XPATH to boolean value here>">
...
</xsl:if>

总是回归真实?

由于boolean在定义时可以是0,1,“false”和“true”,因此测试布尔值的唯一方法是对这些进行字符串比较.这不可能是对的.

< xsl:if>中指定的测试就好像它调用了布尔函数一样.此功能不会像您想象的那样工作.如果它的参数求值为一个节点集(如果你使用一个路径作为它的参数,它将是它),如果节点集不为空,它将返回true,否则返回false.如此有效,你正在测试一个元素的存在,而不是它的价值.如果foo包含false,
<xsl:if test="/path/to/foo">

总是评估为真,因为你在那个测试中真正要求的是“这个元素是否存在?”而不是“元素的价值是真的吗?”元素存在.

布尔值必须为true,false,1或0的规则是XML Schema(which see)的一部分,而不是XPath,它对此规则一无所知. (XPath 1.0,即XPath 2.0 / XQuery 1.0具有the fn:boolean function,它具有智能,即XML Schema感知,评估布尔值.)要确定XSLT中的值是否为真,您必须明确检查它:

<xsl:if test="/path/to/foo = 'true' or /path/to/foo = '1'">

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读