php - контекстный узел в проблеме xpath - PullRequest
17 голосов
/ 24 ноября 2010

имеют этот код:

$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 '&nbsp;Imgs: ' . $imgs->length . '<br />';
}

количество узлов продукта, найденных в xmlfeed, равно 103 - это правильно.

запрос на поиск изображений в этом узле, однако, НЕ выполняется в контексте текущего узла - он находит 116 узлов изображений, которые являются общим числом узлов изображений в ленте, где он должен только выбирать изображения в текущем продукте. (от 0 до 3 в большинстве случаев)

Любые указатели высоко ценятся.

1 Ответ

43 голосов
/ 24 ноября 2010

Вы должны использовать .//cf:image, чтобы сделать его относительно узла контекста.

С http://www.w3.org/TR/xpath/#path-abbrev:

// para выбирает все para-потомки корневого элемента документа и, таким образом, выбирает все элементы para в том же документе, что и контекстный узел

и

. // para выбирает потомков элемента para узла контекста

Также см. http://bugs.php.net/bug.php?id=34413

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...