2016-12-29 2 views
0

В моем xslt У меня возникла ошибка при обновлении версии Saxon с 9.4.0-9 до 9.7.0-14.XSLT - Saxon ошибка при обновлении с 9.4.0-9 до 9.7.0-14

net.sf.saxon.trans.XPathException: Обязательным типом результата вызова вызова является node(); поставляемое значение имеет тип товара xs: строка

В чем проблема?

<xsl:variable name="file-uris" as="xs:string*" 
    select="if (empty($symbol.mappings.folder.uri)) then() else 
    for $f in collection(concat($symbol.mappings.folder.uri, '?select=*.txt&amp;unparsed=yes')) 
    return string($f/base-uri())"/> 
+0

Я не могу найти параметр 'unparsed' в документе Saxon 9.7 о коллекциях, я не конечно, это причина ошибки, о которой вы говорите. Если целью является считывание URI текстовых файлов в определенной папке, то с Saxon 9.7 в таблице стилей 'version =" 3.0 "может быть достаточно использовать' '. –

+0

Спасибо, Мартин, но это не так. –

+0

Я использую xslt 2.0. Мой консультант сказал, что проблема с функцией сбора. Я имею в виду, что Saxon 9.4.x до 9.7x может быть изменено определение функций его коллекции. –

ответ

0

Там произошли существенные изменения в коллекции() в Saxon 9.7, вызванные изменениями в спецификации в XPath 3.0 и 3.1 - к сожалению, обобщение коллекциям любого вида ресурса (например, файлы в формате JSON) из очень сложно сохранить 100% обратную совместимость.

Конкретная проблема заключается в том, что с опцией «unparsed» ранее выпуски Saxon предполагали способ обработки коллекций, не являющихся документами, которые оказались несовместимыми с тем, как впоследствии эволюционировали спецификации. Конкретная ошибка возникает, если функция collection() возвращает значения, отличные от узла, когда XPath 3.0 не включен, поскольку Saxon теперь пытается соответствовать правилам 2.0 и 3.0, в зависимости от того, какая версия XSLT/XPath активна. С включенным 3.0 и с настройками по умолчанию для расширения файла «.txt» достаточно, чтобы ресурсы в коллекции возвращались как экземпляры строки xs: string, но это не работает, если 3.0 не включен.

(Обратите внимание: вы можете поднимать саксонские вопросы здесь, но нам легче их отслеживать, если вы поднимете их на сайте поддержки на saxonica.plan.io - если вы зададите вопрос, тогда мы постарайтесь, чтобы он был закрыт с удовлетворительным разрешением, тогда как с поднятыми здесь вопросами это больше хитов и промахов.)

Смежные вопросы