есть этот код:
$products = $feed->_xpath->query( "//cf:vehicle" ); foreach( $products as $product ) { echo $product->nodeName . ': ' . $product->getAttribute('code') . '<br />'; $imgs = $feed->_xpath->query( "//cf:image" , $product ); echo ' Imgs: ' . $imgs->length . '<br />'; }
количество узлов продукта, найденных в xmlfeed, равно 103 – это правильно.
запрос на локальные изображения внутри этого узла, однако, НЕ делает этого в контексте текущего узла – он находит 116 узлов изображения, которое является общим количеством узлов изображения в канале, где, поскольку оно должно только выбирать изображения в текущем продукте (между 0 и 3 в большинстве случаев)
Любые указатели очень ценились.
Вы должны использовать .//cf:image
чтобы сделать его относительно контекстного узла.
С http://www.w3.org/TR/xpath/#path-abbrev :
// para выбирает всех потомков para корня документа и таким образом выбирает все элементы para в том же документе, что и контекстный узел
а также
.//para выбирает потомки пара-элемента контекстного узла
Также см. http://bugs.php.net/bug.php?id=34413