mirror of
https://github.com/php/php-src.git
synced 2024-09-22 02:17:32 +00:00
d46dc5694c
There are two linked issues: - Conflicts couldn't be resolved by changing the prefix name. - Lacking a prefix would shift the namespace as the default namespace, causing elements to suddenly become part of the namespace instead of the attributes. The output could still be improved by removing redundant namespace declarations, but that's another issue. At least the output is correct now. Closes GH-11777.
37 lines
1.5 KiB
PHP
37 lines
1.5 KiB
PHP
--TEST--
|
|
DOMDocument::createAttributeNS() with prefix name conflict - setAttributeNodeNS variation, with prefix
|
|
--EXTENSIONS--
|
|
dom
|
|
--FILE--
|
|
<?php
|
|
|
|
$doc = new DOMDocument();
|
|
$doc->appendChild($doc->createElement('container'));
|
|
|
|
var_dump($doc->documentElement->setAttributeNodeNS($doc->createAttributeNS('http://php.net/ns1', 'foo:hello'))?->namespaceURI);
|
|
echo $doc->saveXML(), "\n";
|
|
var_dump($doc->documentElement->setAttributeNodeNS($doc->createAttributeNS('http://php.net/ns2', 'foo:hello'))?->namespaceURI);
|
|
echo $doc->saveXML(), "\n";
|
|
var_dump($doc->documentElement->setAttributeNodeNS($doc->createAttributeNS('http://php.net/ns3', 'foo:hello'))?->namespaceURI);
|
|
echo $doc->saveXML(), "\n";
|
|
var_dump($doc->documentElement->setAttributeNodeNS($doc->createAttributeNS('http://php.net/ns4', 'foo:hello'))?->namespaceURI);
|
|
echo $doc->saveXML(), "\n";
|
|
|
|
?>
|
|
--EXPECT--
|
|
NULL
|
|
<?xml version="1.0"?>
|
|
<container xmlns:foo="http://php.net/ns1" foo:hello=""/>
|
|
|
|
NULL
|
|
<?xml version="1.0"?>
|
|
<container xmlns:foo="http://php.net/ns1" xmlns:default="http://php.net/ns2" foo:hello="" default:hello=""/>
|
|
|
|
NULL
|
|
<?xml version="1.0"?>
|
|
<container xmlns:foo="http://php.net/ns1" xmlns:default="http://php.net/ns2" xmlns:default1="http://php.net/ns3" foo:hello="" default:hello="" default1:hello=""/>
|
|
|
|
NULL
|
|
<?xml version="1.0"?>
|
|
<container xmlns:foo="http://php.net/ns1" xmlns:default="http://php.net/ns2" xmlns:default1="http://php.net/ns3" xmlns:default2="http://php.net/ns4" foo:hello="" default:hello="" default1:hello="" default2:hello=""/>
|