当尝试使用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中仍然需要它吗?
答案 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 :)
}