我正在实现几个库(libxslt,libxml2,libexslt) 在我的程序中进行XSLT处理。我包含了将这些库链接到程序的头文件和.so文件,并发现链接工作良好。
下面是使用库的某些功能在我的程序中实现XSLT处理的代码,因此,前两行运行良好,但最后一行产生了错误。
style=xsltParseStylesheetFile(stylesheetfile);
input=xmlParseFile(inputfile);
output=xsltApplyStylesheet(style, input,0); //error
//错误
xmlXPathCompOpEval:找不到功能节点集
XPath错误:未注册功能
使用 xsltproc (这是libxslt的命令行版本)以及我的计算机中相同的XML(inputfile)和XSL文件(stylesheetfile),相同的XSLT处理效果良好。工作。
我知道节点集功能在libexslt中。 但是为什么它不起作用? 是图书馆的链接问题吗?尤其是libexslt? 或配置? 你们知道这个错误的任何解决方案吗? 非常感谢您的帮助。 谢谢。
答案 0 :(得分:1)
仅包含标头和链接到相关库并不能启用扩展功能,因为您提到xsltproc支持它们,请参见https://gitlab.gnome.org/GNOME/libxslt/blob/master/xsltproc/xsltproc.c#L803在调用它的源代码
exsltRegisterAll();
分别启用所有EXSLT扩展功能到XSLT处理器。