2

当尝试使用 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 中是否仍然需要?

4

1 回答 1

0

听起来像是他们的评论者中的一个错误,这在 XQuery 编辑器中很常见。在一个元素中——假设您使用的是直接元素构造函数,而不是计算元素构造函数——使用 XML 注释:

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

计算元素构造函数仍然使用 XQuery 注释:

element hello {
  'world' (: Don't print me :)
}
于 2017-12-20T15:36:44.020 回答