我发现虽然此测试返回 true:
test="string-length(foo) = 0"
但是,由于某些原因,这两个测试都返回 false:
test="foo = ''"
test="foo = null"
知道会发生什么吗? foo 是否可能处于其他状态,导致长度为 0,但仍不等于 '' 或 null?
此外 - 如果我输出:
X<xsl:value-of select="foo" />X
outputs: XX
最佳答案
如果 foo 是空节点集,则 string(foo)
为“”,并且 string-length(foo)
为零,但 foo = ''
为假。 XPath 充满惊喜。
解释是 foo = ""
并不像您预期的那样意味着 string(foo) = ""
,而是 一些 $F in foo 满足 $F = ""
(您可以在 XPath 2.0 中完整编写)。如果 foo 是一个空集,那么存在性测试显然是错误的。
关于XSLT: "test"结果困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20098499/