我试图通过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中更新了项目,因此上面提到的转换没有任何进一步的执行。
答案 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_xsltnode-waf build
在这个exsl之后:node-set()就像魅力一样。