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

Ian*_*ood 18 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 />';
}
Run Code Online (Sandbox Code Playgroud)

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

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

任何指针都非常感激.

Gor*_*don 44

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

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

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

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

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

  • 以`/`或`//`运算符开头的路径是绝对路径.对于相对路径,使用`.`(`self :: node()`缩写)或只是`descendant :: cf:image`. (5认同)