Bug #54354 [Opn->Asn]: Can't not inherit parent's namespace (patch)
| From: | felipe@php.net | Date: | Thu, 24 Mar 2011 21:54:59 +0000 |
| Subject: | Bug #54354 [Opn->Asn]: Can't not inherit parent's namespace (patch) | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-159765@lists.php.net to get a copy of this message | ||
Edit report at http://bugs.php.net/bug.php?id=54354&edit=1
ID: 54354
Updated by: felipe@php.net
Reported by: tom at samplonius dot org
Summary: Can't not inherit parent's namespace (patch)
-Status: Open
+Status: Assigned
Type: Bug
Package: SimpleXML related
Operating System: CentOS 4
PHP Version: 5.3.6
-Assigned To:
+Assigned To: rrichards
Block user comment: N
Private report: N
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 http://bugs.php.net/bug.php?id=54354&edit=1