XSLT:“测试”结果混乱

时间:2013-11-20 14:24:33

标签: xslt testing

我发现这个测试返回true:

test="string-length(foo) = 0"

但是,出于某种原因,这两个测试都返回false:

test="foo = ''"

test="foo = null"

知道可能会发生什么吗?还有一些其他状态,foo可能会导致0长度,但仍然不等于''或null?

另外 - 如果我输出:

X<xsl:value-of select="foo" />X

outputs: XX

2 个答案:

答案 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子元素进行比较。