Browse Source

fix bug #47848 (importNode doesn't preserve attribute namespaces)

add tests
PHP-5.2.1RC1
Rob Richards 17 years ago
parent
commit
69ed9840ef
  1. 1
      NEWS
  2. 12
      ext/dom/document.c
  3. 25
      ext/dom/tests/bug47848.phpt

1
NEWS

@ -14,6 +14,7 @@ PHP NEWS
- Fixed bug #49660 (libxml 2.7.3+ limits text nodes to 10MB). (Felipe)
- Fixed bug #49472 (Constants defined in Interfaces can be overridden).
(Felipe)
- Fixed bug #47848 (importNode doesn't preserve attribute namespaces). (Rob)
- Fixed bug #45120 (PDOStatement->execute() returns true then false for same
statement). (Pierrick)

12
ext/dom/document.c

@ -1252,6 +1252,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);
}
}

25
ext/dom/tests/bug47848.phpt

@ -0,0 +1,25 @@
--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"/>
Loading…
Cancel
Save