(PHP 5, PHP 7)
DOMXPath::query — Выполняет заданное XPath выражение
$expression
   [, DOMNode $contextnode
   [, bool $registerNodeNS = true
  ]] )
   Выполняет заданный XPath запрос expression.
  
expressionXPath запрос.
contextnode
       Дополнительный параметр contextnode может быть
       использован для указания обрабатывать относительные XPath запросы. По
       умолчанию запросы выполняются относительно корневого элемента.
      
registerNodeNS
       Посредством необязательного аргумента 
       registerNodeNS можно отключить 
       автоматическую регистрацию контекста узла.
      
   Возвращает объект DOMNodeList содержащий узлы, 
   отвечающие условиям отбора в XPath expression.
   Любой запрос, не возвращающий узлов, вернет пустой объект
   DOMNodeList.
  
   Если значение аргумента expression построено 
   неправильно или contextnode имеет неверное значение,
   DOMXPath::query() вернет FALSE.
  
| Версия | Описание | 
|---|---|
| 5.3.3 | Добавлен аргумент registerNodeNS. | 
Пример #1 Получение списка всех книг на английском
<?php
$doc = new DOMDocument;
// нам не нужны проблемы с пробелами
$doc->preserveWhiteSpace = false;
$doc->Load('book.xml');
$xpath = new DOMXPath($doc);
// начинаем с корневого элемента
$query = '//book/chapter/para/informaltable/tgroup/tbody/row/entry[. = "en"]';
$entries = $xpath->query($query);
foreach ($entries as $entry) {
    echo "Найдена книга {$entry->previousSibling->previousSibling->nodeValue}," .
         " автор {$entry->previousSibling->nodeValue}\n";
}
?>
Результат выполнения данного примера:
Найдена книга The Grapes of Wrath, автор John Steinbeck Найдена книга The Pearl, автор John Steinbeck
     Можно также использовать аргумент contextnode
     для более короткой записи выражения:
    
<?php
$doc = new DOMDocument;
$doc->preserveWhiteSpace = false;
$doc->load('book.xml');
$xpath = new DOMXPath($doc);
$tbody = $doc->getElementsByTagName('tbody')->item(0);
// запрос относительно узла tbody
$query = 'row/entry[. = "en"]';
$entries = $xpath->query($query, $tbody);
foreach ($entries as $entry) {
    echo "Найдена книга {$entry->previousSibling->previousSibling->nodeValue}," .
         " автор {$entry->previousSibling->nodeValue}\n";
}
?>