(PHP 5, PHP 7)
DOMXPath::query — Evalúa la expresión XPath dada
$expression
   [, DOMNode $contextnode
   [, bool $registerNodeNS = TRUE
  ]] ) : DOMNodeList
   Ejecuta la expresión XPath dada por expression.
  
expressionLa expresión XPath a ejecutar.
contextnode
       El parámetro opcional contextnode se puede especificar para
       hacer consultas XPath relativas. Por omisión, las consultas son relativas al
       elemento raíz.
      
registerNodeNS
       El parámetro opcional registerNodeNS puede ser especificado para
       deshabilitar el registro automático del nodo de contexto.
      
   Devuelve un objeto DOMNodeList que contiene todos los nodos coincidentes
   con la expresión XPath dada por expression. Cualquier expresión que no
   devuelva nodos devolverá un objeto DOMNodeList vacío.
  
   Si el parámetro expression está malformado
   o el parámetro contextnode es inválido,
   DOMXPath::query() devuelve FALSE.
  
| Versión | Descripción | 
|---|---|
| 5.3.3 | Se añadió el parámetro registerNodeNS. | 
Ejemplo #1 Obtener todos los libros en inglés
<?php
$doc = new DOMDocument;
// No queremos molestar con espacios en blanco
$doc->preserveWhiteSpace = false;
$doc->load('book.xml');
$xpath = new DOMXPath($doc);
// Empezamos desde el elemento root
$consulta = '//book/chapter/para/informaltable/tgroup/tbody/row/entry[. = "en"]';
$entradas = $xpath->query($consulta);
foreach ($entradas as $entrada) {
    echo "Se encotró {$entrada->previousSibling->previousSibling->nodeValue}," .
         " por {$entrada->previousSibling->nodeValue}\n";
}
?>
El resultado del ejemplo sería:
Se encontró The Grapes of Wrath, por John Steinbeck Se encontró The Pearl, por John Steinbeck
     También podemos usar el parámetro contextnode para acortar
     nuestra expresión:
    
<?php
$doc = new DOMDocument;
$doc->preserveWhiteSpace = false;
$doc->load('book.xml');
$xpath = new DOMXPath($doc);
$tbody = $doc->getElementsByTagName('tbody')->item(0);
// nuestra consulta es relativa al nodo tbody
$consulta = 'row/entry[. = "en"]';
$entradas = $xpath->query($consulta, $tbody);
foreach ($entradas as $entrada) {
    echo "Se encontró {$entrada->previousSibling->previousSibling->nodeValue}," .
         " por {$entrada->previousSibling->nodeValue}\n";
}
?>