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
|
--TEST--
Test DOM\Element::closest() method: legit cases
--EXTENSIONS--
dom
--FILE--
<?php
$xml = <<<XML
<root>
<a/>
<div class="foo" xml:id="div1">
<div xml:id="div2">
<div class="bar" xml:id="div3"/>
</div>
</div>
</root>
XML;
$dom = DOM\XMLDocument::createFromString($xml);
function test($el, $selector) {
echo "--- Selector: $selector ---\n";
var_dump($el->closest($selector)?->getAttribute('xml:id'));
}
test($dom->getElementById('div3'), 'div');
test($dom->getElementById('div3'), '[class="foo"]');
test($dom->getElementById('div3'), ':not(root)');
test($dom->getElementById('div3'), ':not(div)');
test($dom->getElementById('div3'), 'a');
test($dom->getElementById('div3'), 'root :not(div[class])');
test($dom->getElementById('div3'), 'root > :not(div[class])');
?>
--EXPECT--
--- Selector: div ---
string(4) "div3"
--- Selector: [class="foo"] ---
string(4) "div1"
--- Selector: :not(root) ---
string(4) "div3"
--- Selector: :not(div) ---
NULL
--- Selector: a ---
NULL
--- Selector: root :not(div[class]) ---
string(4) "div2"
--- Selector: root > :not(div[class]) ---
NULL
|