mirror of
https://github.com/php/php-src.git
synced 2024-12-29 03:39:59 +08:00
fix bug #49463 (setAttributeNS fails setting default namespace)
add test
This commit is contained in:
parent
7931525343
commit
30fc597c92
@ -777,9 +777,15 @@ PHP_FUNCTION(dom_element_set_attribute_ns)
|
||||
node_list_unlink(nodep->children TSRMLS_CC);
|
||||
}
|
||||
|
||||
if (xmlStrEqual((xmlChar *) prefix, (xmlChar *)"xmlns") && xmlStrEqual((xmlChar *) uri, (xmlChar *)DOM_XMLNS_NAMESPACE)) {
|
||||
if ((xmlStrEqual((xmlChar *) prefix, (xmlChar *)"xmlns") ||
|
||||
(prefix == NULL && xmlStrEqual((xmlChar *) localname, (xmlChar *)"xmlns"))) &&
|
||||
xmlStrEqual((xmlChar *) uri, (xmlChar *)DOM_XMLNS_NAMESPACE)) {
|
||||
is_xmlns = 1;
|
||||
nsptr = dom_get_nsdecl(elemp, (xmlChar *)localname);
|
||||
if (prefix == NULL) {
|
||||
nsptr = dom_get_nsdecl(elemp, NULL);
|
||||
} else {
|
||||
nsptr = dom_get_nsdecl(elemp, (xmlChar *)localname);
|
||||
}
|
||||
} else {
|
||||
nsptr = xmlSearchNsByHref(elemp->doc, elemp, (xmlChar *)uri);
|
||||
if (nsptr && nsptr->prefix == NULL) {
|
||||
@ -802,7 +808,12 @@ PHP_FUNCTION(dom_element_set_attribute_ns)
|
||||
|
||||
if (nsptr == NULL) {
|
||||
if (prefix == NULL) {
|
||||
errorcode = NAMESPACE_ERR;
|
||||
if (is_xmlns == 1) {
|
||||
xmlNewNs(elemp, (xmlChar *)value, NULL);
|
||||
xmlReconciliateNs(elemp->doc, elemp);
|
||||
} else {
|
||||
errorcode = NAMESPACE_ERR;
|
||||
}
|
||||
} else {
|
||||
if (is_xmlns == 1) {
|
||||
xmlNewNs(elemp, (xmlChar *)value, (xmlChar *)localname);
|
||||
|
17
ext/dom/tests/bug49463.phpt
Normal file
17
ext/dom/tests/bug49463.phpt
Normal file
@ -0,0 +1,17 @@
|
||||
--TEST--
|
||||
Bug #49463 (setAttributeNS fails setting default namespace).
|
||||
--SKIPIF--
|
||||
<?php require_once('skipif.inc'); ?>
|
||||
--FILE--
|
||||
<?php
|
||||
|
||||
$doc = new DOMDocument('1.0', 'utf-8');
|
||||
$root = $doc->createElementNS('http://purl.org/rss/1.0/','rdf:RDF');
|
||||
$doc->appendChild($root);
|
||||
$root->setAttributeNS("http://www.w3.org/2000/xmlns/","xmlns","http://purl.org/rss/1.0/" );
|
||||
|
||||
echo $doc->saveXML()."\n";
|
||||
?>
|
||||
--EXPECT--
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<rdf:RDF xmlns:rdf="http://purl.org/rss/1.0/" xmlns="http://purl.org/rss/1.0/"/>
|
Loading…
Reference in New Issue
Block a user