Допустимо ли строковое значение "да / нет" в качестве значения параметра indent функции serialize?
Используя BaseX 8.6, следующее использование serialize
Функция с картой в качестве второго аргумента работает нормально:
serialize(<root><foo><bar>test</bar></foo></root>, map { 'indent' : 'yes'})
и выводит код с отступом
<root>
<foo>
<bar>test</bar>
</foo>
</root>
Однако, когда я пытаюсь запустить один и тот же код с Saxon 9.7 или AltovaXML Spy, они не компилируют запрос и не жалуются на map { 'indent' : 'yes'}
не логическое значение, а строка. https://www.w3.org/TR/xpath-functions-31/ определяет
indent xs:boolean? true() means "yes", false() means "no"
поэтому я не совсем уверен, допускает ли это только логическое значение и предназначено для объяснения его значения по отношению к значениям сериализации yes/no
или это также означает использование yes
или же no
позволено.
1 ответ
В BaseX аргумент карты был добавлен до его интеграции в спецификацию XQFO 3.1. Тогда самым очевидным выбором было использование синтаксиса для объявлений вывода в прологе запроса (в котором для значений параметров сериализации могут использоваться только строки). - Новый официальный синтаксис будет доступен в будущей версии BaseX.