首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有libxslt的XSLT扩展函数

带有libxslt的XSLT扩展函数
EN

Stack Overflow用户
提问于 2021-10-04 16:33:30
回答 1查看 41关注 0票数 0

我正在尝试为libxslt (c++)创建一个xslt扩展函数。我的扩展函数接受一个字符串作为输入,然后xml解析器解析该字符串,该函数返回解析后的xml。我通过下面的表达式返回值:

代码语言:javascript
复制
void fnParse(xmlXPathParserContextPtr ctx, int nargs)
{
    ...
    xmlXPathReturnNodeSet(ctx, xmlXPathNodeSetCreate(node));
}

但是我发现libxslt在使用后并没有释放节点内存。它释放xmlNodeSet,但不释放存储在此节点集中的节点。也许我错过了一些重要的东西。在扩展函数中返回XML节点的正确方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2021-10-05 17:03:02

您必须通过调用xsltCreateRVT和xsltRegisterLocalRVT来创建并注册一个“结果值树”,然后将想要返回的节点添加到该树中。看看像exsltStrTokenizeFunction这样的函数,看看它是如何工作的:

https://gitlab.gnome.org/GNOME/libxslt/-/blob/master/libexslt/strings.c

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69439466

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档