Нужна ли мне пустая последовательность () в дополнение к комментарию во вложенном выражении?
При попытке использовать редактор oXygen, чтобы закомментировать узел внутри элемента, oXygen просто обернул его в (:<foo>foo 1</foo>:)
, но потом я узнал, что таким образом узел не закомментирован, а имеет префикс текстового узла с (:
и с суффиксом текстового узла :)
,
Затем я посмотрел синтаксис и выяснил, что вам нужно использовать вложенное выражение {(:<foo>foo 1</foo>:)}
вместо этого иметь доступ к синтаксису комментариев.
Однако пока BaseX и Saxon 9.8 с радостью принимают {(:<foo>foo 1</foo>:)}
Альтова жалуется и нуждается в дополнительной пустой последовательности {(:<foo>foo 1</foo>:)()}
,
https://www.w3.org/TR/xquery-31/ предполагает, что в XQuery 3.1 выражение внутри фигурных скобок является необязательным и по умолчанию имеет значение ()
,
Означает ли это также, что в XQuery 3.1 достаточно просто использовать комментарий внутри фигурных скобок, без пустой последовательности?
Подводя итог, Saxon и BaseX позволяют мне использовать <root>{(:<foo>foo 1</foo>:)}</root>
пока Альтова жалуется на неправильный синтаксис, заставляя меня использовать <root>{(:<foo>foo 1</foo>:)()}</root>
,
Это все еще необходимо в XQuery 3.1?
1 ответ
Звучит как ошибка в их комментаторе, что довольно часто встречается в редакторах XQuery. Внутри элемента - и предполагается, что вы используете прямые конструкторы элементов, а не вычисляемые конструкторы элементов - используйте комментарии XML:
<hello>world
<!-- Don't print me -->
</hello>
Конструкторы вычисляемых элементов по-прежнему используют комментарии XQuery:
element hello {
'world' (: Don't print me :)
}