Сбой запроса с динамической ошибкой: невозможно сериализовать карту с помощью этого метода вывода
Это должна быть проблема новичков, так как я только начинаю с 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')})
Ошибка, о которой сообщает Saxon:
Сбой запроса с динамической ошибкой: невозможно сериализовать карту с помощью этого метода вывода
Я искал эту ошибку в Google и SO, но ничего не нашел. Я пробовал это с объявлением вывода и без него, а также с объявлением вывода в XSL и без него. Я пробовал это с помощью fn:transform() и transform(). Я также добавил объявление для пространства имен fn. Преобразование работает из командной строки Saxon и из eXist. Поэтому мне, должно быть, не хватает чего-то простого в построении карты для опций fn:transform().
1 ответ
Результатом функции fn:transform() является карта, и похоже, что вы выполняете запрос таким образом, чтобы результат запроса сериализовался с использованием метода вывода XML по умолчанию. Попытка сериализовать карту с использованием метода вывода XML не удастся.
В зависимости от того, чего именно вы хотите достичь, вы можете сделать несколько вещей. Самым простым решением может быть изменение текста запроса на
transform(map{'source-node': doc('sample.xml'),'stylesheet-node':doc('sample.xsl')})
? output
в этом случае результатом будет основной документ результата преобразования, который, вероятно, вас больше всего интересует.