Я вообще не воспроизводил эту проблему — я создал файл "A2.blm" в том же каталоге, что и таблица стилей XSLT. Преобразование работает должным образом.
Эта ошибка исходит от синтаксического анализатора XML, а не от процессора XSLT. Скорее всего, вы предоставили в качестве исходного XML-файла что-то, что не является правильно сформированным XML-документом (или полностью отсутствует).
Вероятнее всего, файл "A2.blm" не найден или к нему невозможно получить доступ – хорошо проверьте.
Чтобы этот файл можно было найти, он должен находиться в том же каталоге, что и ваш файл таблицы стилей.
Из спецификации XSLT 2.0 W3C:
«Функция unparsed-text считывает внешний ресурс (например, файл) и возвращает его содержимое в виде строки.
Аргумент $href должен быть строкой в форме URI. URI не должен содержать идентификатор фрагмента и должен идентифицировать ресурс, который может быть прочитан как текст. Если URI является относительным URI, то он разрешается относительно базового URI из статического контекста. "
И, самое главное:
"Примечание. Если подходит другой базовый URI (например, при разрешении относительного URI, считанного из исходного документа), то относительный URI следует разрешить с помощью функции разрешения-uriFO, прежде чем передавать его в функцию неанализируемого текста. ."
Вот доказательство того, что остальная часть вашего преобразования работает так, как задумано:
<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>
person
Dimitre Novatchev
schedule
19.04.2011