Я реализую несколько библиотек (libxslt, libxml2, libexslt) для обработки XSLT в своей программе. Я включил файлы заголовков и файлы .so, чтобы связать библиотеки с программой, и обнаружил, что связывание работает хорошо.
Ниже приведен код, использующий некоторые функции библиотеки для реализации обработки XSLT в моей программе, и в результате первые две строки работали хорошо, но в последней строке была сгенерирована ошибка.
style=xsltParseStylesheetFile(stylesheetfile);
input=xmlParseFile(inputfile);
output=xsltApplyStylesheet(style, input,0); //error
// ошибка
xmlXPathCompOpEval: набор узлов функции не найден
Ошибка XPath: незарегистрированная функция
Та же обработка XSLT хорошо работала с использованием xsltproc, который представляет собой версию libxslt для командной строки и те же файлы XML (входной файл) и XSL (файл таблицы стилей) на моем компьютере, но реализация не сработает.
Я знаю, что функция набора узлов находится в libexslt. Но почему не работает? Это проблема связывания библиотеки? Особенно libexslt? или конфигурация? Вы знаете какое-нибудь решение этой ошибки? Был бы очень признателен за вашу помощь. Спасибо.
exsltRegisterAll();
, как это делает xsltproc на gitlab.gnome? .org / GNOME / libxslt / blob / master / xsltproc /? Насколько я понимаю, включение только заголовков и ссылок на библиотеки не позволяет использовать функции расширения. Для использования функцииnode-set
, конечно, достаточно зарегистрировать общие функции расширения. - person Martin Honnen   schedule 24.11.2018exsltRegisterAll();
Теперь я вызвал функцию, и она сработала. Большое спасибо, я очень ценю это :) - person BcFlower   schedule 26.11.2018