ID:               30566
 Updated by:       [EMAIL PROTECTED]
 Reported By:      joern_h at gmx dot net
 Status:           Closed
 Bug Type:         XML related
 Operating System: Win 2000
 PHP Version:      5.0.2
 New Comment:

Not sure exactly how XML_Transformer is using namespaces, but this
shouldnt affect it's "abuse" of XML Namespaces. The change only makes
attributes use their correct namespace rather than use the namespace
attached to the first attribute in the list for all attributes of an
element. If it were to break XML_Transformer, then there is a serious
bug in XML_Transformer.


Previous Comments:
------------------------------------------------------------------------

[2004-11-20 16:47:21] [EMAIL PROTECTED]

Does this mean that XML_Transformer's "abuse" of XML Namespaces (using
<foo:bar> without declaring foo using xmlns:foo="...") will no longer
work as of PHP 5.0.3?

------------------------------------------------------------------------

[2004-11-13 15:34:15] [EMAIL PROTECTED]

This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.



------------------------------------------------------------------------

[2004-10-26 17:52:53] joern_h at gmx dot net

Description:
------------
When parsing a document with multiple / default namespaces a wrong
namespace can be reported. PHP 4.3.8 shows the right result.

Reproduce code:
---------------
<?php

error_reporting(E_ALL);

$xml = <<<HEREDOC
<?xml version="1.0"?>
<x xmlns="http://x/"; xmlns:y="http://y/";>
    <y z="z" y:y="y" xmlns="http://a/"; />
</x>
HEREDOC;

$p =& xml_parser_create_ns(null, "\n");
$vals  = array();
$index = array();
xml_parser_set_option($p, XML_OPTION_SKIP_WHITE, true);
xml_parser_set_option($p, XML_OPTION_CASE_FOLDING, false);
if (!xml_parse_into_struct($p, $xml , $vals, $index)) {
    echo xml_error_string($p);
}
xml_parser_free($p);

print_r($vals);

?>


Expected result:
----------------
The attribute y:y should be in the http://y/ namespace, this is also
the result when using PHP 4.3.8

Actual result:
--------------
With PHP 5.02 the attribute y:y is in the http://a/ namespace. When the
z attribute is removed the bug does not occur.


------------------------------------------------------------------------


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

Reply via email to