如何从nodejs / node_xslt使用exsl:node-set?

时间:2012-07-21 14:04:02

标签: node.js xslt exslt libxslt

我试图通过node_xslt模块从nodejs使用EXSLT节点集函数。这是一个围绕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'表达式。

更新:node_xslt插件的作者Bahblah已经在github中更新了项目,因此上面提到的转换没有任何进一步的执行。

1 个答案:

答案 0 :(得分:2)

最后想出来检查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()就像魅力一样。