xmlXPathCompOpEval: function node-set not found

1k views Asked by At

I'm implementing several libraries(libxslt, libxml2, libexslt) for XSLT Processing in my program. I included the header files and .so files to link the libraries to the program, and found out that the linking worked well.

Below is the code using some functions of the library to realize XSLT Processing in my program, and as a result the first two line worked well but an error was generated on the last line.

style=xsltParseStylesheetFile(stylesheetfile);
input=xmlParseFile(inputfile);
output=xsltApplyStylesheet(style, input,0); //error

//error
xmlXPathCompOpEval : function node-set not found
XPath error : Unregistered function

The same XSLT processing worked well using xsltproc which is a command-line version of libxslt and the same XML(inputfile) and XSL files(stylesheetfile) in my computer, but the implementation won't work.

I know that the node-set function is in libexslt. But why won't it work? Is it the linking problem of the library? Especially libexslt? or configuration? Do you guys know any solution of this error? Would really appreciate your help. Thank you.

1

There are 1 answers

0
Martin Honnen On BEST ANSWER

The inclusion of headers and linking to the relevant libraries alone doesn't enable extension functions, as you mention xsltproc supporting them see the source code of it at https://gitlab.gnome.org/GNOME/libxslt/blob/master/xsltproc/xsltproc.c#L803 where it calls

exsltRegisterAll();

to enable respectively register all EXSLT extension functions with the XSLT processor.