mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-01-13 13:17:36 +03:00
xinclude: Make xmlXIncludeCopyNode iterate all descendants
This commit is contained in:
parent
5f664ab2cf
commit
64eaf4d429
21
xinclude.c
21
xinclude.c
@ -821,7 +821,7 @@ xmlXIncludeAddTxt(xmlXIncludeCtxtPtr ctxt, const xmlChar *txt,
|
||||
|
||||
static xmlNodePtr
|
||||
xmlXIncludeCopyNodeList(xmlXIncludeCtxtPtr ctxt, xmlDocPtr target,
|
||||
xmlDocPtr source, xmlNodePtr elem);
|
||||
xmlDocPtr source, xmlNodePtr elem, xmlNodePtr parent);
|
||||
|
||||
/**
|
||||
* xmlXIncludeCopyNode:
|
||||
@ -844,9 +844,16 @@ xmlXIncludeCopyNode(xmlXIncludeCtxtPtr ctxt, xmlDocPtr target,
|
||||
if (elem->type == XML_DTD_NODE)
|
||||
return(NULL);
|
||||
if (elem->type == XML_DOCUMENT_NODE)
|
||||
result = xmlXIncludeCopyNodeList(ctxt, target, source, elem->children);
|
||||
else
|
||||
result = xmlDocCopyNode(elem, target, 1);
|
||||
result = xmlXIncludeCopyNodeList(ctxt, target, source, elem->children,
|
||||
NULL);
|
||||
else {
|
||||
result = xmlDocCopyNode(elem, target, 2);
|
||||
if (result == NULL)
|
||||
return(NULL);
|
||||
if ((elem->type != XML_ENTITY_REF_NODE) && (elem->children != NULL))
|
||||
result->children = xmlXIncludeCopyNodeList(ctxt, target, source,
|
||||
elem->children, result);
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
@ -862,7 +869,7 @@ xmlXIncludeCopyNode(xmlXIncludeCtxtPtr ctxt, xmlDocPtr target,
|
||||
*/
|
||||
static xmlNodePtr
|
||||
xmlXIncludeCopyNodeList(xmlXIncludeCtxtPtr ctxt, xmlDocPtr target,
|
||||
xmlDocPtr source, xmlNodePtr elem) {
|
||||
xmlDocPtr source, xmlNodePtr elem, xmlNodePtr parent) {
|
||||
xmlNodePtr cur, res, result = NULL, last = NULL;
|
||||
|
||||
if ((ctxt == NULL) || (target == NULL) || (source == NULL) ||
|
||||
@ -879,6 +886,7 @@ xmlXIncludeCopyNodeList(xmlXIncludeCtxtPtr ctxt, xmlDocPtr target,
|
||||
res->prev = last;
|
||||
last = res;
|
||||
}
|
||||
res->parent = parent;
|
||||
}
|
||||
cur = cur->next;
|
||||
}
|
||||
@ -1536,7 +1544,8 @@ loaded:
|
||||
* Add the top children list as the replacement copy.
|
||||
*/
|
||||
ctxt->incTab[nr]->inc = xmlXIncludeCopyNodeList(ctxt, ctxt->doc,
|
||||
doc, doc->children);
|
||||
doc, doc->children,
|
||||
NULL);
|
||||
}
|
||||
#ifdef LIBXML_XPTR_ENABLED
|
||||
else {
|
||||
|
Loading…
Reference in New Issue
Block a user