@@ -4,31 +4,31 @@ Bug #79701 (getElementById does not correctly work with duplicate definitions) -
44dom
55--FILE--
66<?php
7- function test ($ dom , $ fn ) {
7+ function test ($ dom , $ prefix , $ fn ) {
88 $ test1 = $ dom ->getElementById ('x ' );
99 $ test2 = $ dom ->getElementById ('y ' );
1010
1111 echo "--- After resetting test1's id --- \n" ;
1212
13- $ fn ($ test1 , ' xml: id ' , 'y ' );
13+ $ fn ($ test1 , $ prefix . ' id ' , 'y ' );
1414 var_dump ($ dom ->getElementById ('x ' )?->nodeName);
1515 var_dump ($ dom ->getElementById ('y ' )?->nodeName);
1616
1717 echo "--- After resetting test2's id --- \n" ;
1818
19- $ fn ($ test2 , ' xml: id ' , 'x ' );
19+ $ fn ($ test2 , $ prefix . ' id ' , 'x ' );
2020 var_dump ($ dom ->getElementById ('x ' )?->nodeName);
2121 var_dump ($ dom ->getElementById ('y ' )?->nodeName);
2222
2323 echo "--- After resetting test1's id --- \n" ;
2424
25- $ fn ($ test1 , ' xml: id ' , 'z ' );
25+ $ fn ($ test1 , $ prefix . ' id ' , 'z ' );
2626 var_dump ($ dom ->getElementById ('x ' )?->nodeName);
2727 var_dump ($ dom ->getElementById ('y ' )?->nodeName);
2828
2929 echo "--- After resetting test2's id --- \n" ;
3030
31- $ fn ($ test2 , ' xml: id ' , 'z ' );
31+ $ fn ($ test2 , $ prefix . ' id ' , 'z ' );
3232 var_dump ($ dom ->getElementById ('x ' )?->nodeName);
3333 var_dump ($ dom ->getElementById ('y ' )?->nodeName);
3434
@@ -51,30 +51,43 @@ $common_xml = <<<XML
5151</root>
5252XML ;
5353
54- echo "\n=== DOMDocument: setAttribute === \n\n" ;
54+ echo "\n=== DOMDocument: setAttribute (prefixed) === \n\n" ;
5555
5656$ dom = new DOMDocument ;
5757$ dom ->loadXML ($ common_xml );
58- test ($ dom , fn ($ element , $ name , $ value ) => $ element ->setAttribute ($ name , $ value ));
58+ test ($ dom , " xml: " , fn ($ element , $ name , $ value ) => $ element ->setAttribute ($ name , $ value ));
5959
60- echo "\n=== DOMDocument: setAttributeNS === \n\n" ;
60+ echo "\n=== DOMDocument: setAttributeNS (prefixed) === \n\n" ;
6161
6262$ dom = new DOMDocument ;
6363$ dom ->loadXML ($ common_xml );
64- test ($ dom , fn ($ element , $ name , $ value ) => $ element ->setAttributeNS (getNamespace ($ name ), $ name , $ value ));
64+ test ($ dom , " xml: " , fn ($ element , $ name , $ value ) => $ element ->setAttributeNS (getNamespace ($ name ), $ name , $ value ));
6565
66- echo "\n=== Dom \\XMLDocument: setAttribute === \n\n" ;
66+ echo "\n=== Dom \\XMLDocument: setAttribute (prefixed) === \n\n" ;
6767
6868$ dom = Dom \XMLDocument::createFromString ($ common_xml );
69- test ($ dom , fn ($ element , $ name , $ value ) => $ element ->setAttribute ($ name , $ value ));
69+ test ($ dom , "xml: " , fn ($ element , $ name , $ value ) => $ element ?->setAttribute($ name , $ value ));
70+
71+ echo "\n=== Dom \\XMLDocument: setAttributeNS (prefixed) === \n\n" ;
72+
73+ $ dom = Dom \XMLDocument::createFromString ($ common_xml );
74+ test ($ dom , "xml: " , fn ($ element , $ name , $ value ) => $ element ?->setAttribute(getNamespace ($ name ), $ name , $ value ));
75+
76+ echo "\n=== Dom \\XMLDocument: setAttribute === \n\n" ;
7077
71- echo "\n=== Dom \\XMLDocument: setAttributeNS === \n\n" ;
78+ $ common_xml = <<<XML
79+ <root>
80+ <test1 id="x"/>
81+ <test2 id="y"/>
82+ </root>
83+ XML ;
7284
7385$ dom = Dom \XMLDocument::createFromString ($ common_xml );
74- test ($ dom , fn ($ element , $ name , $ value ) => $ element ->setAttributeNS (getNamespace ($ name ), $ name , $ value ));
86+ test ($ dom , "" , fn ($ element , $ name , $ value ) => $ element ?->setAttribute($ name , $ value ));
87+
7588?>
7689--EXPECT--
77- === DOMDocument: setAttribute ===
90+ === DOMDocument: setAttribute (prefixed) ===
7891
7992--- After resetting test1's id ---
8093NULL
91104--- Get id z ---
92105string(5) "test1"
93106
94- === DOMDocument: setAttributeNS ===
107+ === DOMDocument: setAttributeNS (prefixed) ===
95108
96109--- After resetting test1's id ---
97110NULL
@@ -108,24 +121,41 @@ NULL
108121--- Get id z ---
109122string(5) "test1"
110123
111- === Dom\XMLDocument: setAttribute ===
124+ === Dom\XMLDocument: setAttribute (prefixed) ===
112125
113126--- After resetting test1's id ---
114127NULL
115- string(5) "test1"
128+ NULL
116129--- After resetting test2's id ---
117- string(5) "test2"
118- string(5) "test1"
130+ NULL
131+ NULL
119132--- After resetting test1's id ---
120- string(5) "test2"
133+ NULL
121134NULL
122135--- After resetting test2's id ---
123136NULL
124137NULL
125138--- Get id z ---
126- string(5) "test1"
139+ NULL
140+
141+ === Dom\XMLDocument: setAttributeNS (prefixed) ===
127142
128- === Dom\XMLDocument: setAttributeNS ===
143+ --- After resetting test1's id ---
144+ NULL
145+ NULL
146+ --- After resetting test2's id ---
147+ NULL
148+ NULL
149+ --- After resetting test1's id ---
150+ NULL
151+ NULL
152+ --- After resetting test2's id ---
153+ NULL
154+ NULL
155+ --- Get id z ---
156+ NULL
157+
158+ === Dom\XMLDocument: setAttribute ===
129159
130160--- After resetting test1's id ---
131161NULL
0 commit comments