#43826 [Opn->Fbk]: CreateAttributeNS incorrectly attaching to document element
| From: | jani@php.net | Date: | Thu, 17 Jul 2008 23:47:15 +0000 |
| Subject: | #43826 [Opn->Fbk]: CreateAttributeNS incorrectly attaching to document element | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-126923@lists.php.net to get a copy of this message | ||
ID: 43826
Updated by: jani@php.net
Reported By: sb1304 at hotmail dot com
-Status: Open
+Status: Feedback
Bug Type: DOM XML related
Operating System: Windows/Linux
PHP Version: 5.2.5
New Comment:
Please try using this CVS snapshot:
http://snaps.php.net/php5.2-latest.tar.gz
For Windows (zip):
http://snaps.php.net/win32/php5.2-win32-latest.zip
For Windows (installer):
http://snaps.php.net/win32/php5.2-win32-installer-latest.msi
Previous Comments:
------------------------------------------------------------------------
[2008-01-12 01:18:09] sb1304 at hotmail dot com
Apologies, ignore the comp->setAttributeNS... This should be commented
out. Was used for comparison test.
------------------------------------------------------------------------
[2008-01-12 01:14:07] sb1304 at hotmail dot com
Description:
------------
Creating a Namespace attribute through CreateAttributeNS always
attaches the namespace declaration to the root/ducumentElement even when
the node is another one. Same issue whether there is a default Namespace
or not. Same on Windows/Linux. SetAttributeNS performs as expected.
Reproduce code:
---------------
<?php
$doc = new DOMDocument ("1.0", "utf-8");
$root =
$doc->createElementNS("urn:ietf:params:xml:ns:epp-1.0",'employee');
$doc->appendChild($root);
$name = $root->appendChild($doc->createElement("empname"));
$name->appendChild($doc->createTextNode("test"));
$addr = $root->appendChild($doc->createElement("empaddr"));
$addr->appendChild($doc->createTextNode("test123"));
$comp = $root->appendChild($doc->createElement("comp"));
$comp->appendChild($doc->createTextNode("TEST LTD"));
//Create a attribute with namespace
$attr = $doc->createAttributeNS('ns','surname:prefix');
//append the new attribute node into the employee element
$comp->appendChild($attr);
//$root->setAttributeNS('ns', 'surname:prefix', 'none');
$comp->setAttributeNS('ns', 'surname:prefix', 'none');
//save the DOMDocument into a file
$test = $doc->saveXML();
echo $test;
?>
Expected result:
----------------
<?xml version="1.0" encoding="utf-8" ?>
<employee xmlns="urn:ietf:params:xml:ns:epp-1.0">
<empname>test</empname>
<empaddr>test123</empaddr>
<comp xmlns:surname="ns" surname:prefix="">TEST LTD</comp>
</employee>
Actual result:
--------------
<?xml version="1.0" encoding="utf-8" ?>
<employee xmlns="urn:ietf:params:xml:ns:epp-1.0" xmlns:surname="ns">
<empname>test</empname>
<empaddr>test123</empaddr>
<comp surname:prefix="">TEST LTD</comp>
</employee>
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=43826&edit=1