--TEST--
Document::createAttributeNS()
--EXTENSIONS--
dom
--FILE--
createAttributeNS($ns, $qname);
} catch (DOMException $e) {
$ns_readable = is_null($ns) ? 'null' : "\"$ns\"";
echo "($ns_readable, \"$qname\"): {$e->getMessage()}\n";
}
}
$dom = Dom\HTMLDocument::createEmpty();
$attrs = [];
$attrs[] = $dom->createAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:foo');
$attrs[] = $dom->createAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns:bar');
$attrs[] = $dom->createAttributeNS('http://www.w3.org/2000/xmlns/', 'xmlns');
$attrs[] = $dom->createAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:foo');
$attrs[] = $dom->createAttributeNS('urn:a', 'foo:bar');
$attrs[] = $dom->createAttributeNS('urn:a', 'bar:bar');
$attrs[] = $dom->createAttributeNS('http://www.w3.org/2000/xmlns', 'foo:bar');
echo "--- Error cases ---\n";
testErrorCase($dom, '', 'bar:bar');
testErrorCase($dom, null, 'bar:bar');
testErrorCase($dom, 'urn:a', '@');
testErrorCase($dom, 'urn:a', 'foo:bar:baz');
testErrorCase($dom, 'http://www.w3.org/2000/xmlns', 'xmlns');
testErrorCase($dom, 'http://www.w3.org/2000/xmlns', 'xmlns:bar');
testErrorCase($dom, 'http://www.w3.org/2000/xmlns', 'xml:foo');
echo "\n--- Normal cases ---\n";
// Test after creating to make sure they cannot corrupt each other
foreach ($attrs as $attr) {
dumpAttr($attr);
}
// Test in document
$root = $dom->appendChild($dom->createElement('foo'));
foreach ($attrs as $attr) {
$root->setAttributeNodeNS($attr);
}
echo $dom->saveHtml(), "\n";
echo "\n--- NULL prefix cases ---\n";
// Test multiple "null prefixes" after having a root
$attrs = [];
$attrs[] = $dom->createAttributeNS(null, 'baz1');
$attrs[] = $dom->createAttributeNS(null, 'baz2');
$attrs[] = $dom->createAttributeNS('', 'baz1');
$attrs[] = $dom->createAttributeNS('', 'baz2');
foreach ($attrs as $attr) {
dumpAttr($attr);
$root->setAttributeNodeNS($attr);
}
echo $dom->saveHtml(), "\n";
?>
--EXPECT--
--- Error cases ---
("", "bar:bar"): Namespace Error
(null, "bar:bar"): Namespace Error
("urn:a", "@"): Invalid Character Error
("urn:a", "foo:bar:baz"): Invalid Character Error
("http://www.w3.org/2000/xmlns", "xmlns"): Namespace Error
("http://www.w3.org/2000/xmlns", "xmlns:bar"): Namespace Error
("http://www.w3.org/2000/xmlns", "xml:foo"): Namespace Error
--- Normal cases ---
Attr: xmlns:foo
string(5) "xmlns"
string(9) "xmlns:foo"
string(29) "http://www.w3.org/2000/xmlns/"
Attr: xmlns:bar
string(5) "xmlns"
string(9) "xmlns:bar"
string(29) "http://www.w3.org/2000/xmlns/"
Attr: xmlns
NULL
string(5) "xmlns"
string(29) "http://www.w3.org/2000/xmlns/"
Attr: xml:foo
string(3) "xml"
string(7) "xml:foo"
string(36) "http://www.w3.org/XML/1998/namespace"
Attr: foo:bar
string(3) "foo"
string(7) "foo:bar"
string(5) "urn:a"
Attr: bar:bar
string(3) "bar"
string(7) "bar:bar"
string(5) "urn:a"
Attr: foo:bar
string(3) "foo"
string(7) "foo:bar"
string(28) "http://www.w3.org/2000/xmlns"
--- NULL prefix cases ---
Attr: baz1
NULL
string(4) "baz1"
NULL
Attr: baz2
NULL
string(4) "baz2"
NULL
Attr: baz1
NULL
string(4) "baz1"
NULL
Attr: baz2
NULL
string(4) "baz2"
NULL