XPath (XML Path Language) является языком для обращения к частям XML-документа.
Вместе с DOMDocument, XPath, позволяет очень быстро извлекать данные из XML документа. Для примера берем документ XML.html. Теперь посчитаем сколько книг у каждого автора, они конечно написали намного больше, пусть это будет список книг этих авторов изданых неким издательством.
Можно конечно используя только DOMDocument, выполнить эту задачу. Но у нас есть XPath, так пусть поработает.
// загружаем документ
$dom = new DOMDocument;
$dom->load('books.xml');
// объявляем DOMXPath
$xpath = new DOMXPath($dom);
// получает масив авторов
$autors = $dom->getElementsByTagName('autor');
// создаем DOMXPath запрос подсчитать теги book
$query = 'count(book)';
// пропускаем через рекрусию
foreach($autors as $autor){
$books = $xpath->evaluate($query, $autor);
echo $autor->getAttribute('name') . " - " . $books ;
}
И вот результат
Robert Sheckley - 2
Isaac Asimov - 2
Ray Bradbury - 2
Frank Patrick Herbert - 1