как использовать 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, элемент для каждого Не удалось оценить выражение «выбрать».

ОБНОВЛЕНИЕ: Bahblah, автор плагина node_xslt, обновил проект на github, поэтому вышеупомянутое преобразование выполняется без лишних слов.


person Peter Aron Zentai    schedule 21.07.2012    source источник
comment
Скорее всего, это означает, что какой бы XSLT-процессор ни использовался nodejs, он не поддерживает EXSLT. Вы можете попробовать использовать другие функции EXSLT, и если ни одна из них не работает, это подтверждает вышеприведенную гипотезу.   -  person Dimitre Novatchev    schedule 21.07.2012


Ответы (1)


Наконец разобрался с проверкой xsltproc.c, мне пришлось добавить следующие дополнения в node_xslt.c

наверх:

#include <libexslt/exslt.h>
#include <libexslt/exsltconfig.h>

И в строке 138 в FUNCTION(transform)

exsltRegisterAll();

Расширьте wscript так, чтобы:

obj.lib = ['xml2', 'xslt', 'exslt']

Затем мне пришлось перестроить node_xslt с помощью

node-waf build

После этого exsl:node-set() работает как шарм.

person Peter Aron Zentai    schedule 21.07.2012