summaryrefslogtreecommitdiff
path: root/ext/dom/document.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/dom/document.c')
-rw-r--r--ext/dom/document.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/ext/dom/document.c b/ext/dom/document.c
index e2d87b05c9..f82d7667c6 100644
--- a/ext/dom/document.c
+++ b/ext/dom/document.c
@@ -1203,7 +1203,18 @@ PHP_FUNCTION(dom_document_import_node)
if (!retnodep) {
RETURN_FALSE;
}
-
+
+ if ((retnodep->type == XML_ATTRIBUTE_NODE) && (nodep->ns != NULL)) {
+ xmlNsPtr nsptr = NULL;
+ xmlNodePtr root = xmlDocGetRootElement(docp);
+
+ nsptr = xmlSearchNsByHref (nodep->doc, root, nodep->ns->href);
+ if (nsptr == NULL) {
+ int errorcode;
+ nsptr = dom_get_ns(root, nodep->ns->href, &errorcode, nodep->ns->prefix);
+ }
+ xmlSetNs(retnodep, nsptr);
+ }
}
DOM_RET_OBJ(rv, (xmlNodePtr) retnodep, &ret, intern);