我有一个非常简单的XSLT函数:
<xsl:function name="str:test" as="xs:string"></xsl:function>
它显然什么也没做(为了证明这个问题已经被轻视了)。当我对函数的结果进行比较时,由于某种原因它们是不相等的:
<xsl:if test="str:test() = str:test()">
equal
</xsl:if>
<xsl:if test="not(str:test() = str:test())">
not equal
</xsl:if>
当我希望结果相同时,它输出not equal
。
答案 0 :(得分:1)
=运算符被定义为在列表上运行,并且它测试以查看两个列表的交集是否为非空。要比较像字符串这样的原子值,你应该使用“eq”
答案 1 :(得分:0)
在XPath 2.0中使用=
意味着测试两个序列以查看序列1中是否有任何项目等于序列2中的任何项目。如果至少有一个这样的对< / em>,然后比较产生true
。
这可能具有娱乐性,而不是完全直观的副作用。例如,此XPath为true
:(1, 2) = (2, 3)
此规则的副作用是,如果比较空序列,则不存在一对相等的项,这意味着() = ()
为false
。你上面写的基本上是空序列的比较。没有一对相等的序列项。因此结果是false
。