From:             bugs dot php-0705 at nico dot edtinger dot at
Operating system: irrelevant
PHP version:      5.2.2
PHP Bug Type:     *XML functions
Bug description:  XmlWrite Namespace functions don't allow xmlns defintion to 
be optional

Description:
------------
I've tried to write a document where a elements are in a namespace, but
the namespace URI is only defined once in the root element. All other
elements are written only with the mapped prefix.

libxml2 allows namespaceURI to be null (i.e. in
xmlTextWriterStartElementNS), which omits the xmlns attribute. But i.e.
xmlwriter_write_element_ns or xmlwriter_start_element_ns in PHP convert
null to an empty string, because zend_parse_parameters() is missing the !
for the namespace URI parameter.

The only possible workaround is using xmlwriter_(start|create)_element and
prepending the namespace prefix to the tagname "manually".

Reproduce code:
---------------
<?php
// NOTE: results are indented for better readability
$xml = new XmlWriter();
$xml->openMemory();
$xml->startDocument();
$xml->startElementNS('test', 'test', 'urn:x-test:');
$xml->writeElementNS('test', 'foo', null, '');
$xml->writeElementNS('test', 'bar', null, '');
$xml->endElement();
echo $xml->outputMemory();
?>

Expected result:
----------------
<?xml version="1.0"?>
<test:test xmlns="urn:x-test:">
        <test:foo></test:foo>
        <test:bar></test:bar>
</test:test>


Actual result:
--------------
<?xml version="1.0"?>
<test:test xmlns:test="urn:x-test:">
        <test:foo xmlns:test=""></test:foo>
        <test:bar xmlns:test=""></test:bar>
</test:test>


-- 
Edit bug report at http://bugs.php.net/?id=41287&edit=1
-- 
Try a CVS snapshot (PHP 4.4): 
http://bugs.php.net/fix.php?id=41287&r=trysnapshot44
Try a CVS snapshot (PHP 5.2): 
http://bugs.php.net/fix.php?id=41287&r=trysnapshot52
Try a CVS snapshot (PHP 6.0): 
http://bugs.php.net/fix.php?id=41287&r=trysnapshot60
Fixed in CVS:                 http://bugs.php.net/fix.php?id=41287&r=fixedcvs
Fixed in release:             
http://bugs.php.net/fix.php?id=41287&r=alreadyfixed
Need backtrace:               http://bugs.php.net/fix.php?id=41287&r=needtrace
Need Reproduce Script:        http://bugs.php.net/fix.php?id=41287&r=needscript
Try newer version:            http://bugs.php.net/fix.php?id=41287&r=oldversion
Not developer issue:          http://bugs.php.net/fix.php?id=41287&r=support
Expected behavior:            http://bugs.php.net/fix.php?id=41287&r=notwrong
Not enough info:              
http://bugs.php.net/fix.php?id=41287&r=notenoughinfo
Submitted twice:              
http://bugs.php.net/fix.php?id=41287&r=submittedtwice
register_globals:             http://bugs.php.net/fix.php?id=41287&r=globals
PHP 3 support discontinued:   http://bugs.php.net/fix.php?id=41287&r=php3
Daylight Savings:             http://bugs.php.net/fix.php?id=41287&r=dst
IIS Stability:                http://bugs.php.net/fix.php?id=41287&r=isapi
Install GNU Sed:              http://bugs.php.net/fix.php?id=41287&r=gnused
Floating point limitations:   http://bugs.php.net/fix.php?id=41287&r=float
No Zend Extensions:           http://bugs.php.net/fix.php?id=41287&r=nozend
MySQL Configuration Error:    http://bugs.php.net/fix.php?id=41287&r=mysqlcfg

Reply via email to