来自相同XSLT函数的结果不等于

时间:2016-01-21 19:49:13

标签: xslt

我有一个非常简单的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

2 个答案:

答案 0 :(得分:1)

=运算符被定义为在列表上运行,并且它测试以查看两个列表的交集是否为非空。要比较像字符串这样的原子值,你应该使用“eq”

答案 1 :(得分:0)

在XPath 2.0中使用=意味着测试两个序列以查看序列1中是否有任何项目等于序列2中的任何项目。如果至少有一个这样的对< / em>,然后比较产生true

这可能具有娱乐性,而不是完全直观的副作用。例如,此XPath为true(1, 2) = (2, 3)

此规则的副作用是,如果比较空序列,则不存在一对相等的项,这意味着() = ()false。你上面写的基本上是空序列的比较。没有一对相等的序列项。因此结果是false