<xsl:variable name="res" select="document('')/*/my:resources/("/>
Значение атрибута select
не является синтаксически правильным выражением XPath . Каждый совместимый XSLT-процессор должен выдавать ошибку.
Решение
Исправьте вышеприведенное в:
<xsl:variable name="vRes" select="document('')/*/my:resources"/>
Если все еще возникает исключение, прочитайте о XsltSettings классе.
Затем создайте экземпляр XsltSettings с помощью этого конструктора , например:
XsltSettings(true, false)
Не включать сценарии - оставить второй аргумент конструктора как false
.
Ниже приведен более полный фрагмент кода :
// Create the XsltSettings object with document() enabled and script disabled.
XsltSettings settings = new XsltSettings(true,false);
// Create the XslCompiledTransform object and load the style sheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load("sort.xsl", settings, new XmlUrlResolver());
Обновление : Другая возможная причина ошибки - динамическое создание таблицы стилей XSLT (не из файла). В этом случае XSLT-процессор обычно не может разрешить относительный URI в document('')
.
В этом последнем случае решение состоит в том, чтобы сделать требуемый элемент содержимым xsl:variable
и использовать функцию расширения xxx:node-set()
для обращения к этому элементу.