From: Nick Wellnhofer Date: Fri, 19 Dec 2014 00:08:35 +0100 Subject: Account for ID attributes in xmlSetTreeDoc --- tree.c | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/tree.c b/tree.c index 307782c..ff9a890 100644 --- a/tree.c +++ b/tree.c @@ -2799,8 +2799,19 @@ xmlSetTreeDoc(xmlNodePtr tree, xmlDocPtr doc) { if(tree->type == XML_ELEMENT_NODE) { prop = tree->properties; while (prop != NULL) { + if (prop->atype == XML_ATTRIBUTE_ID) { + xmlRemoveID(tree->doc, prop); + } + prop->doc = doc; xmlSetListDoc(prop->children, doc); + + if (xmlIsID(doc, tree, prop)) { + xmlChar *idVal = xmlNodeListGetString(doc, prop->children, + 1); + xmlAddID(NULL, doc, idVal, prop); + } + prop = prop->next; } }