Php - context node в xpath проблема
есть этот код:
$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 - это правильно.
запрос к локальным изображениям внутри этого node, однако, НЕ делает это в текущем контексте node - он находит 116 узлов изображения, которое является общим количеством узлов изображения в канале, где, поскольку оно должно только выбирать изображения в текущем продукте (в большинстве случаев от 0 до 3)
Любые указатели, по достоинству оцененные.
Ответы
Ответ 1
Вы должны использовать .//cf:image
, чтобы сделать его относительно контекста node.
Из http://www.w3.org/TR/xpath/#path-abbrev:
//para выбирает всех потомков абзаца корня документа и таким образом выбирает все элементы para в том же документе, что и контекст node
и
.//para выбирает потомки пара-элемента контекста node
Также см. http://bugs.php.net/bug.php?id=34413