php - xpath问题中的上下文节点

时间:2010-11-24 11:10:34

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

在xmlfeed中找到的产品节点数是103 - 这是正确的。

在该节点内定位图像的查询然而在当前节点上下文中没有这样做 - 它找到116个图像节点,这是节点中图像节点的总数,因为它应该只选择当前产品中的图像(大多数情况下在0到3之间)

任何指示都非常感激。

1 个答案:

答案 0 :(得分:42)

您必须使用.//cf:image使其相对于上下文节点。

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

  

// para选择文档根目录的所有para后代,从而选择与上下文节点相同的文档中的所有para元素

  

.// para选择上下文节点的para元素后代

另见http://bugs.php.net/bug.php?id=34413