代码之家  ›  专栏  ›  技术社区  ›  Ian Wood

xpath问题中的php上下文节点

  •  17
  • Ian Wood  · 技术社区  · 14 年前

    有此代码:

    $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 回复  |  直到 14 年前
        1
  •  44
  •   Gordon Haim Evgi    14 年前

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

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

    //para选择文档根的所有para子代,从而选择与上下文节点位于同一文档中的所有para元素

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

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