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);
--- /dev/null
+--TEST--
+Bug #47848 (importNode doesn't preserve attribute namespaces)
+--SKIPIF--
+<?php require_once('skipif.inc'); ?>
+--FILE--
+<?php
+
+$aDOM = new DOMDocument();
+$aDOM->appendChild($aDOM->createElementNS('http://friend2friend.net/','f2f:a'));
+
+$fromdom = new DOMDocument();
+$fromdom->loadXML('<data xmlns:ai="http://altruists.org" ai:attr="namespaced" />');
+
+$attr= $fromdom->firstChild->attributes->item(0);
+
+$att = $aDOM->importNode($attr);
+
+$aDOM->documentElement->appendChild($aDOM->importNode($attr, true));
+
+echo $aDOM->saveXML();
+
+?>
+--EXPECT--
+<?xml version="1.0"?>
+<f2f:a xmlns:f2f="http://friend2friend.net/" xmlns:ai="http://altruists.org" ai:attr="namespaced"/>
\ No newline at end of file