Xml 在XSLT中,true()和true之间有什么区别?
我想了解Xml 在XSLT中,true()和true之间有什么区别?,xml,xslt,boolean,xslt-1.0,xslt-2.0,Xml,Xslt,Boolean,Xslt 1.0,Xslt 2.0,我想了解true()和true之间的区别以及两者的用法 例如: 我声明一个变量var1,如下所示: <xsl:variable name="var1" select="/root/name ='' and exists(/root/name[@as:firstname])"></xsl:variable> <!--and now I wan to use it as a condition, say:--> <xsl:if test="$va
true()
和true
之间的区别以及两者的用法
例如:
我声明一个变量var1
,如下所示:
<xsl:variable name="var1"
select="/root/name ='' and exists(/root/name[@as:firstname])"></xsl:variable>
<!--and now I wan to use it as a condition, say:-->
<xsl:if test="$var1=true() "> <!-- Now would I use true() or true here ?-->
<xsl:text>Hello World</xsl:text>
</xsl:if>
你好,世界
由于您使用布尔表达式定义了变量,因此:
<xsl:if test="$var1=true()">
可以在XSLT1.0中使用(并且可以在任何非空字符串中使用),但不能在XSLT2.0中使用
还请注意:
string(var1)
将返回“true”或“false”,因此测试:
<xsl:if test="$var1='true'">
<xsl:if test="string($var1)='true'">
在XSLT 1.0和2.0中,编写类似于
的东西是一个常见的错误(我在XQuery中比在XSLT中看到的更多)。这里表达式true
的意思是child::true
,除非源文档中有名为true
的元素,否则很可能会选择一个空序列,在布尔上下文中将其视为false()
如果您像这样使用名称“true”,Saxon的最新版本会给您一个警告,如果您确实希望访问具有此名称的元素,请将其编写为
child::true
或/true
。true()
是一个返回布尔值true的函数,而true
只需选择一个名为true(/root/name/true/child)的节点即可,谢谢@sergioFC。因此,在if条件下,我应该使用true()。我看到了同样使用true的代码,所以有点困惑。@user502808
<xsl:if test="string($var1)='true'">