xmlXPathCompOpEval: набор узлов функции не найден - PullRequest
0 голосов
/ 24 ноября 2018

Я внедряю несколько программ (libxslt, libxml2, libexslt) для обработки XSLT в моей программе.Я включил заголовочные файлы и файлы .so для связи библиотек с программой и обнаружил, что связывание работало хорошо.

Ниже приведен код, использующий некоторые функции библиотеки для реализации обработки XSLT в моей программе,и в результате первые две строки работали хорошо, но в последней строке возникла ошибка.

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

// error
xmlXPathCompOpEval: набор узлов функции не найден
Ошибка XPath: незарегистрированная функция

Та же самая обработка XSLT работала хорошо, используя xsltproc , который является версией командной строки libxslt и того же XML-файла (входной файл) и файлов XSL (файл таблицы стилей) вмой компьютер, но реализация не будет работать.

Я знаю, что функция набора узлов находится в libexslt.Но почему это не сработает?Это проблема компоновки библиотеки?Особенно libexslt?или конфигурация?Ребята, вы знаете какое-нибудь решение этой ошибки?Буду очень признателен за вашу помощь.Спасибо.

1 Ответ

0 голосов
/ 26 ноября 2018

Включение заголовков и связывание только с соответствующими библиотеками не включает функции расширения, так как вы упоминаете, что xsltproc поддерживает их, смотрите исходный код по адресу https://gitlab.gnome.org/GNOME/libxslt/blob/master/xsltproc/xsltproc.c#L803, где он вызывает

exsltRegisterAll();

, чтобы включить, соответственно зарегистрировать все функции расширения EXSLT с процессором XSLT.

...