除了封闭表达式中的注释之外,我还需要一个空序列()吗?

时间:2017-12-20 15:30:58

标签: xquery xquery-3.1

当尝试使用oXygen编辑器注释掉元素oXygen中的一个节点时,只需将其包装到(:<foo>foo 1</foo>:)中,但我随后发现这样的节点没有被注释掉,而是以前缀为带有(:的文本节点,后缀为带:)的文本节点。

然后我查找了语法,发现你需要使用一个封闭的表达式{(:<foo>foo 1</foo>:)}来访问注释语法。

然而,当BaseX和Saxon 9.8高兴地接受{(:<foo>foo 1</foo>:)}时,Altova抱怨并需要一个额外的空序列{(:<foo>foo 1</foo>:)()}

https://www.w3.org/TR/xquery-31/#doc-xquery31-EnclosedExpr在XQuery 3.1中建议花括号内的表达式是可选的,默认为()

这是否也意味着在XQuery 3.1中,仅使用花括号内的注释就足够了,而不是空序列?

总而言之,Saxon和BaseX允许我使用<root>{(:<foo>foo 1</foo>:)}</root>,而Altova抱怨语法不正确,迫使我使用<root>{(:<foo>foo 1</foo>:)()}</root>

XQuery 3.1中仍然需要它吗?

1 个答案:

答案 0 :(得分:0)

听起来像是评论者中的一个错误,这在XQuery编辑器中很常见。在一个元素中 - 假设您使用direct element constructors,而不是computed element constructors - 使用XML注释:

<hello>world
  <!-- Don't print me -->
</hello>

Computed element构造函数仍然使用XQuery注释:

element hello {
  'world' (: Don't print me :)
}