2010-11-24 106 views
13

上下文節點有這樣的代碼: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之間)

任何指針非常感謝。

回答

34

您必須使用.//cf:image才能使其相對於上下文節點。

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

// para選擇文檔根的所有的para子孫,因此選擇在同一文檔中所有para元素作爲上下文節點

。//para選擇上下文節點的para元素後代

另請參閱http://bugs.php.net/bug.php?id=34413

+1

歡呼戈登 - 又一次大規模的疏忽加入我的投資組合! – 2010-11-24 11:24:20