Нужна ли мне пустая последовательность () в дополнение к комментарию во вложенном выражении?

При попытке использовать редактор 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 :)
}
Другие вопросы по тегам