Как использовать exsl:node-set из nodejs/node_xslt?
Я пытаюсь использовать функцию набора узлов EXSLT из nodejs через модуль node_xslt. Это простая оболочка для библиотеки libxslt, в которой есть поддержка EXSLT, насколько я понимаю. Тем не менее, любая ссылка на exsl:node-set приводит к тому, что я использую это.
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:exsl="http://exslt.org/common"
extension-element-prefixes="exsl">
<xsl:variable name="variable">
<item />
<item />
</xsl:variable>
<xsl:variable name="result" select="exsl:node-set($variable)"/>
Любая это ошибка:
xmlXPathCompOpEval: набор узлов функции не найден Ошибка XPath: незарегистрированная ошибка времени выполнения функции: файл./JayDataContextGenerator_OData_V2.xslt строка 58 элемент for-each Не удалось оценить выражение 'select'.
ОБНОВЛЕНИЕ: Bahblah, автор плагина node_xslt обновил проект в github, поэтому вышеупомянутое преобразование выполняется без каких-либо дополнительных действий.
1 ответ
Наконец, выяснив это, изучив xsltproc.c, я должен был добавить следующие дополнения в node_xslt.c
наверх:
#include <libexslt/exslt.h>
#include <libexslt/exsltconfig.h>
И в строке 138, в FUNCTION(преобразование)
exsltRegisterAll();
Расширьте wscript так, чтобы:
obj.lib = ['xml2', 'xslt', 'exslt']
Затем мне пришлось перестроить node_xslt с
node-waf build
После этого exsl:node-set() работает как шарм.