1--TEST--
2DOM\XMLDocument interaction with XPath
3--EXTENSIONS--
4dom
5--FILE--
6<?php
7
8$dom = DOM\XMLDocument::createFromString(<<<XML
9<?xml version="1.0"?>
10<root>
11    <p>hi</p>
12    <element xmlns="urn:e" xmlns:a="urn:a">
13        <?target data?>
14        <!-- comment -->
15    </element>
16</root>
17XML);
18
19$xpath = new DOM\XPath($dom);
20
21echo "--- Get data of the paragraph ---\n";
22
23$result = $xpath->query("//p");
24var_dump($result);
25var_dump($result->item(0)->textContent);
26
27$result = $xpath->evaluate("//p");
28var_dump($result);
29var_dump($result->item(0)->textContent);
30
31var_dump($xpath->evaluate("string(//p)"));
32var_dump($xpath->evaluate("string-length(//p)"));
33var_dump($xpath->evaluate("boolean(//p)"));
34
35echo "--- Get data of special nodes ---\n";
36
37$result = $xpath->query("//*/comment()|//*/processing-instruction()");
38foreach ($result as $item) {
39    var_dump(get_class($item));
40    var_dump($item->textContent);
41}
42
43echo "--- Get a namespace node ---\n";
44
45// Namespace nodes don't exist in modern day DOM.
46var_dump($xpath->evaluate("//*/namespace::*"));
47
48?>
49--EXPECT--
50--- Get data of the paragraph ---
51object(DOM\NodeList)#4 (1) {
52  ["length"]=>
53  int(1)
54}
55string(2) "hi"
56object(DOM\NodeList)#5 (1) {
57  ["length"]=>
58  int(1)
59}
60string(2) "hi"
61string(2) "hi"
62float(2)
63bool(true)
64--- Get data of special nodes ---
65string(25) "DOM\ProcessingInstruction"
66string(4) "data"
67string(11) "DOM\Comment"
68string(9) " comment "
69--- Get a namespace node ---
70object(DOM\NodeList)#5 (1) {
71  ["length"]=>
72  int(0)
73}
74