Ошибка запроса с Dynami c Ошибка: невозможно сериализовать карту с помощью этого метода вывода - PullRequest
0 голосов
/ 03 мая 2020

Это должно быть проблемой noob, так как я только начинаю с XQuery. Мне удалось создать простой XQuery для eXist, который запускает XSL-преобразование. Но мне не удалось создать аналогичный XQuery для Saxon (9.9.1.5J), который выполняет преобразование XSL.

Рабочий XQuery для eXist:

xquery version "3.0";
transform:transform(doc("sample.xml"), doc("sample.xsl"), ())

Отказ XQuery для Saxon:

xquery version "3.1";
transform(map{'source-node': doc('sample.xml'),'stylesheet-node':doc('sample.xsl')})

Ошибка, сообщенная Саксоном:

Ошибка запроса с Dynami c Ошибка: невозможно сериализовать карту с помощью этого метода вывода

Я искал в Google и SO эту ошибку, но ничего не получил. Я пробовал это с и без объявления вывода, а также с и без объявления вывода в XSL. Я пробовал это с помощью fn: transform () и transform (). Я вставил объявление для пространства имен fn. Преобразование работает из саксонской командной строки и из eXist. Поэтому я, должно быть, упускаю что-то простое в построении карты для опций fn: transform ().

1 Ответ

1 голос
/ 04 мая 2020

Результатом функции fn: transform () является карта, и похоже, что вы выполняете запрос таким образом, что результат запроса сериализуется с использованием метода вывода XML по умолчанию. Попытка сериализации карты с использованием метода вывода XML завершится неудачей.

Вы можете сделать несколько вещей, в зависимости от того, чего именно вы хотите достичь. Самым простым решением может быть изменение тела запроса на

transform(map{'source-node': doc('sample.xml'),'stylesheet-node':doc('sample.xsl')}) 
   ? output

, и в этом случае результат будет основным документом результата преобразования, что, вероятно, больше всего вас интересует.

...