我发现这个测试返回true:
test="string-length(foo) = 0"
但是,出于某种原因,这两个测试都返回false:
test="foo = ''"
test="foo = null"
知道可能会发生什么吗?还有一些其他状态,foo可能会导致0长度,但仍然不等于''或null?
另外 - 如果我输出:
X<xsl:value-of select="foo" />X
outputs: XX
答案 0 :(得分:2)
如果foo是空节点集,则string(foo)
为“”,string-length(foo)
为零,但foo = ''
为false。 XPath充满惊喜。
解释是foo = ""
并不像您期望的那样意味着string(foo) = ""
,而是some $F in foo satisfies $F = ""
(您可以在XPath 2.0中完整地编写)。如果foo是空集,则存在性测试显然是错误的。
答案 1 :(得分:1)
如果执行test="foo = null"
,则将上下文节点的foo
子元素与上下文节点的null
子元素进行比较。