我正试图通过node_xslt模块使用nodejs中的EXSLT节点集函数。这是一个围绕libxslt库的简单包装器,它支持EXSLT这就是我使用它的方式。
<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行元素未能计算"select"表达式。
更新:node_xslt插件的作者Bahbrah已经在github中更新了项目,所以上面提到的转换执行起来没有任何麻烦。
最后,我发现了检查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()的工作方式类似于魅力。