Bug #54354 [Com]: Can't not inherit parent's namespace (patch)
| From: | giacomo at boticca dot com | Date: | Tue, 01 Jul 2014 14:55:04 +0000 |
| Subject: | Bug #54354 [Com]: Can't not inherit parent's namespace (patch) | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-186406@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=54354&edit=1
ID: 54354
Comment by: giacomo at boticca dot com
Reported by: tom at samplonius dot org
Summary: Can't not inherit parent's namespace (patch)
Status: Assigned
Type: Bug
Package: SimpleXML related
Operating System: CentOS 4
PHP Version: 5.3.6
Assigned To: rrichards
Block user comment: N
Private report: N
New Comment:
This is a tiny patch that makes a lot of sense, but it's been sitting there for more than 3
years.
Should it be a pull request instead of a patch now?
Previous Comments:
------------------------------------------------------------------------
[2011-03-23 05:58:18] tom at samplonius dot org
Description:
------------
There are two issues:
(1) If you addChild(), the new child always inherits the namespace of the parent. It is currently
impossible to add children with no namespace, to a parent with a namespace. Though looking at the
code, it is clear that is intent to distinguish between a NULL namespace value and a blank namespace
value. I believe the design intent was that NULL means inherit the parent's namespace, and
'' means that no namespace should be used. The attached patch does this.
(2) If you specify a namespace of "", addChild() will actually add an attribute of "
xmlns="" ", which is not valid.
Patch is attached. If the $namespace parameter is "", no namespace is used, which fixes
both issues.
Test script:
---------------
<?php
header('Content-Type: text/plain');
$r = new SimpleXMLElement('<r />');
$c1 = $r->addChild('ns1:child1', NULL, 'urn:myspace1');
$c1->addChild('child2');
echo $r->asXML(), "\n";
$r = new SimpleXMLElement('<r />');
$r->addChild('Thing1', 100, '');
echo $r->asXML(), "\n";
Expected result:
----------------
<?xml version="1.0"?>
<r><ns1:child1
xmlns:ns1="urn:myspace1"><ns1:child2/></ns1:child1></r>
<?xml version="1.0"?>
<r><Thing1>100</Thing1></r>
Actual result:
--------------
<?xml version="1.0"?>
<r><ns1:child1
xmlns:ns1="urn:myspace1"><ns1:child2/></ns1:child1></r>
<?xml version="1.0"?>
<r><Thing1 xmlns="">100</Thing1></r>
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=54354&edit=1