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

为什么
<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'">

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


php输出xml格式字符串
J2ME Mobile 3D入门教程系列文章之一
XML轻松学习手册
XML入门的常见问题(一)
XML入门的常见问题(三)
XML轻松学习手册(2)XML概念
xml文件介绍及使用
xml编程(一)-xml语法
XML文件结构和基本语法
第2章 包装类
XML入门的常见问题(二)
Java对象的强、软、弱和虚引用
JS解析XML文件和XML字符串详解
java中枚举的详细使用介绍
了解Xml格式
XML入门的常见问题(四)
深入SQLite多线程的使用总结详解
PlayFramework完整实现一个APP(一)
XML和YAML的使用方法
XML轻松学习总节篇