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