diff options
Diffstat (limited to 'ext/dom/tests/bug43364.phpt')
-rw-r--r-- | ext/dom/tests/bug43364.phpt | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/ext/dom/tests/bug43364.phpt b/ext/dom/tests/bug43364.phpt new file mode 100644 index 0000000000..0df581b7ac --- /dev/null +++ b/ext/dom/tests/bug43364.phpt @@ -0,0 +1,40 @@ +--TEST-- +Bug #43364 (recursive xincludes don't remove internal xml nodes properly) +--FILE-- +<?php +function loopElements($nodes) +{ + $count = 0; + foreach($nodes as $node) { + if($node instanceof DOMElement) { + $count++; + if($node->childNodes->length > 0) { + $count += loopElements($node->childNodes); + } + } + } + return $count; +} + +$xml = <<<DOC +<?xml version="1.0" encoding="UTF-8"?> +<root xmlns:xi="http://www.w3.org/2001/XInclude"> + <a> + <a_child1>ac1</a_child1> + <a_child2>ac2</a_child2> + </a> + <b><xi:include xpointer="xpointer(/root/a)" /></b> + <c><xi:include xpointer="xpointer(/root/b)" /></c> +</root> +DOC; + +$doc = new DomDocument(); +$doc->loadXml($xml); +$doc->xinclude(); + +$count = loopElements(array($doc->documentElement)); + +var_dump($count); +?> +--EXPECT-- +int(13) |