1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
--TEST--
Bug #79701 (getElementById does not correctly work with duplicate definitions) - set attribute ns in html variation
--EXTENSIONS--
dom
--FILE--
<?php
function test($namespace) {
$dom = Dom\HTMLDocument::createFromString(<<<HTML
<p>
<em id="x">1</em>
<strong id="y">2</strong>
</p>
HTML, LIBXML_NOERROR);
$test1 = $dom->getElementById('x');
$test2 = $dom->getElementById('y');
echo "--- After resetting em's id ---\n";
$test1->setAttributeNS($namespace, "id", 'y');
var_dump($dom->getElementById('x')?->nodeName);
var_dump($dom->getElementById('y')?->nodeName);
echo "--- After resetting strong's id ---\n";
$test2->setAttributeNS($namespace, "id", 'x');
var_dump($dom->getElementById('x')?->nodeName);
var_dump($dom->getElementById('y')?->nodeName);
echo "--- After resetting em's id ---\n";
$test1->setAttributeNS($namespace, "id", 'z');
var_dump($dom->getElementById('x')?->nodeName);
var_dump($dom->getElementById('y')?->nodeName);
echo "--- After resetting strong's id ---\n";
$test2->setAttributeNS($namespace, "id", 'z');
var_dump($dom->getElementById('x')?->nodeName);
var_dump($dom->getElementById('y')?->nodeName);
echo "--- Get id z ---\n";
var_dump($dom->getElementById('z')?->nodeName);
}
echo "=== Test empty namespace ===\n\n";
test("");
echo "\n=== Test \"urn:x\" namespace ===\n\n";
test("urn:x");
?>
--EXPECT--
=== Test empty namespace ===
--- After resetting em's id ---
NULL
string(2) "EM"
--- After resetting strong's id ---
string(6) "STRONG"
string(2) "EM"
--- After resetting em's id ---
string(6) "STRONG"
NULL
--- After resetting strong's id ---
NULL
NULL
--- Get id z ---
string(2) "EM"
=== Test "urn:x" namespace ===
--- After resetting em's id ---
string(2) "EM"
string(6) "STRONG"
--- After resetting strong's id ---
string(2) "EM"
string(6) "STRONG"
--- After resetting em's id ---
string(2) "EM"
string(6) "STRONG"
--- After resetting strong's id ---
string(2) "EM"
string(6) "STRONG"
--- Get id z ---
NULL
|