Edit report at http://bugs.php.net/bug.php?id=54354&edit=1

 ID:                 54354
 Updated by:         fel...@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

Reply via email to