微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

xml – 如何创建一个布尔值?

我对XSLT完全陌生,无法解决我在下面的代码错误
<xsl:variable name="var" select="boolean('false')"/>

<xsl:if test="$var'">variable is true</xsl:if>

它总是返回true,当它是假的。为什么?

$ var变量的值定义如下:

< xsl:variable name =“var”select =“boolean('false')”/>

真正()

这是因为在XPath中“false”是一个普通的字符串,而不是false(),这是布尔值的构造函数false()

XPath中的两个布尔值(注意它们是构造的!):

true()和false()

将任何值转换为布尔值的细节在XPath Spec中拼写出来:

boolean函数将其参数转换为布尔值,如下所示:

>一个数字是真的,如果且仅当它
不为正或负零
也不是NaN
>节点集是真实的,如果且仅当它
是非空的
>一个字符串是真的,如果且仅当它的
长度不为零
>除了四种基本类型之外的类型的对象以取决于该类型的方式被转换为布尔值
“。

在你的情况下,字符串“false”不是数字0,并且具有正长度,因此应用上面第三个项目中的规则,得到true()。

因此,要在XSLT 1.0中定义一个变量,其值为false(),需要将定义写为以下内容

< xsl:variable name =“vMyVar”select =“false()”/>

或者,如果你不记得这一点,你可以总是写:

< xsl:variable name =“vMyVar”select =“1 = 0”/>

(指定评估为false()的任何表达式),XSLT处理器将为您完成工作。

在XSLT 2.0中,最好明确指定变量的类型:

< xsl:variable name =“vMyVar”as =“xs:boolean”select =“false()”/>

原文地址:https://www.jb51.cc/xml/294072.html

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