123456789101112131415161718192021222324252627282930313233343536373839404142 |
- --TEST--
- Bug #43364 (recursive xincludes don't remove internal xml nodes properly)
- --EXTENSIONS--
- dom
- --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 == 13 || $count == 11);
- ?>
- --EXPECT--
- bool(true)
|