DOMXPath->query()
DOMXPath->query() -- 
   Evaluates the given XPath expression 
  
Description
class 
DOMXPath { 
DOMNodeList 
query ( string expression [, DOMNode contextnode] )
}
   Executes the given XPath expression.
  
Parameters
   
- expression
- 
       The XPath expression to execute.
       
- contextnode
- 
       The optional contextnode can be specified for
       doing relative XPath queries. By default, the queries are relative to 
       the root element.
       
Return Values
   Returns a DOMNodeList containing all nodes matching 
   the given XPath expression. Any expression which do
   not return nodes will return an empty DOMNodeList.
  
Examples
   
| Example 1. Getting all the english books | 
<?php
 $doc = new DOMDocument;
 
 // We don't want to bother with white spaces
 $doc->preserveWhiteSpace = false;
 
 $doc->Load('book.xml');
 
 $xpath = new DOMXPath($doc);
 
 // We starts from the root element
 $query = '//book/chapter/para/informaltable/tgroup/tbody/row/entry[. = "en"]';
 
 $entries = $xpath->query($query);
 
 foreach ($entries as $entry) {
 echo "Found {$entry->previousSibling->previousSibling->nodeValue}," .
 " by {$entry->previousSibling->nodeValue}\n";
 }
 ?>
 | 
 The above example will output: | Found The Grapes of Wrath, by John Steinbeck
Found The Pearl, by John Steinbeck | 
 
     We can also use the contextnode parameter to shorten
     our expression:
     | 
<?php
 $doc = new DOMDocument;
 $doc->preserveWhiteSpace = false;
 
 $doc->load('book.xml');
 
 $xpath = new DOMXPath($doc);
 
 $tbody = $doc->getElementsByTagName('tbody')->item(0);
 
 // our query is relative to the tbody node
 $query = 'row/entry[. = "en"]';
 
 $entries = $xpath->query($query, $tbody);
 
 foreach ($entries as $entry) {
 echo "Found {$entry->previousSibling->previousSibling->nodeValue}," .
 " by {$entry->previousSibling->nodeValue}\n";
 }
 ?>
 | 
 |