Я не повторяю эту проблему вообще - я создал файл "A2.blm" в том же каталоге, что и таблица стилей XSLT.Преобразование работает, как и ожидалось.
Эта ошибка связана с анализатором XML, а не с процессором XSLT.Скорее всего, вы предоставили в качестве исходного XML-файла что-то, что не является правильно сформированным XML-документом (или полностью отсутствует).
Скорее всего, файл "A2.blm" не найден или не доступен -- проверьте хорошо .
Для того, чтобы этот файл был найден, он должен находиться в том же каталоге, в котором находится файл таблицы стилей.
Из XSLT 2.0 W3C spec :
"Функция unparsed-text считывает внешний ресурс (например, файл) и возвращаетего содержимое в виде строки.
Аргумент $ href должен быть строкой в форме URI. URI не должен содержать идентификатор фрагмента и должен идентифицировать ресурс, который может быть прочитан как текст. Если URI является относительным URI, то он разрешается относительно базового URI из статического контекста . "
И самое главное:
" Примечание. Если уместен другой базовый URI (например, при разрешении относительного URI, считанного из исходного документа), то относительный URI должен быть разрешен с использованием функции resolv-uriFO перед передачей его в функцию unparsed-text . "
Вот доказательство того, что остальная часть вашего преобразования работает должным образом:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fn="http://www.w3.org/2005/02/xpath-functions" version="2.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match='/'>
<add_adverts>
<Body>
<Envelope>
<Advert>
<xsl:for-each select="tokenize(., '\r?\n')">
<fff>?</fff>
</xsl:for-each>
</Advert>
</Envelope>
</Body>
</add_adverts>
</xsl:template>
</xsl:stylesheet>
, когда это преобразование применяется к этому документу XML :
<t>1
2
3
</t>
в розыске, сполучается правильный результат :
<add_adverts xmlns:fn="http://www.w3.org/2005/02/xpath-functions">
<Body>
<Envelope>
<Advert>
<fff>?</fff>
<fff>?</fff>
<fff>?</fff>
<fff>?</fff>
</Advert>
</Envelope>
</Body>
</add_adverts>