2016-01-28 2 views
0

В моей таблице стилей, что я пытаюсь отлаживать в XMLSpy, у меня есть следующие строки:Вызов функции Xalan

xsl:for-each select="xalan:nodeset($Order)//Lines" 

При попытке разобрать его в XMLSpy, я получаю ошибку: «функция» Xalan: набор узлов 'не было определено. Я использую внешнее преобразование XSL, но я думаю, что этого недостаточно, и я должен определить его в моей таблице стилей.

Я ценю помощь в том, как вызвать эту функцию локально на моем ноутбуке из таблицы стилей.

+0

Вам нужно будет настроить XMLSpy для использования Xalan, а не встроенного XSLT-процессора, если вы хотите использовать функцию расширения Xalan. С другой стороны, функция nodeet не нужна в XSLT 2.0 и более поздних версиях, на которой поддерживается XMLSpy, поэтому вы можете просто заменить «xalan: nodeset ($ Order) // Lines' на' $ Order // Lines', если вы используете XSLT 2.0 в XMLSpy. –

+0

Вам не нужно и не может определить функцию набора узлов Xalan в вашей собственной таблице стилей. Если вы используете Xalan и правильно связали префикс «xalan» с правильным пространством имен, этого должно быть достаточно, чтобы заставить его работать. (Это, конечно, отдельно от того факта, что никто здесь не может полагать, что вам нужна эта функция, поскольку в XSLT 2.0 это необязательно. Если у вас действительно есть причины для использования 1.0, вам нужно будет прямо сказать, что вам нужно использовать 1.0 - даже тогда я предсказываю, что никто вам не поверит.) –

+0

@ CMSperberg-McQueen Многим людям приходится использовать XSLT 1.0. –

ответ

2

Если вы не используете процессор Xalan (и даже если хотите), замените xalan:nodeset() на более общий exsl:node-set() - где xmlns:exsl="http://exslt.org/common".

Предполагается, что вы используете XSLT 1.0. Как упоминалось в комментариях, в XSLT 2.0 не требуется функция node-set().

+0

На самом деле для xalan я использовал внешнюю программу xsl в Spy: java.exe -cp "d: \ xalan \ 2.7.2 \ xalan.jar" org.apache.xalan.xslt.Process -in% 1 -xsl% 3 - out% 2. Еще после замены функции xalan на exsl: node-set я получаю ту же ошибку. Помимо пространства имен я должен предопределять его в файле xsl или в самом xmlspy? – dcx

+0

Использует ли XMLSpy Xalan, когда вы «отлаживаете» XSLT? –

+0

@dcx Вам необходимо привязать префикс, который вы используете (будь то 'xalan:' или 'exsl:') в пространство имен. Это объявление должно быть в таблице стилей XSLT. –