0
接聽question,我注意到下面的表達式奇怪的libxml行爲:什麼XPath表達式 '//祖先:: * [@ ID] [1]' 實際上意味着
//ancestor::*[@id][1]
給定上下文節點。我試圖理解這個表達的實際含義。
以下是在PHP片段和它的調用的結果:
$html = <<<HTML
<div id="div1">
<div id="div2">
<p id="p1">Content</p>
</div>
<div id="div3">
<p id="p2">Content</p>
</div>
</div>
HTML;
$doc = new DOMDocument();
$doc->loadHTML($html);
$xpath = new DOMXpath($doc);
$contextNode = $doc->getElementById('p1');
$list = $xpath->query('//ancestor::*[@id][1]', $contextNode);
printf("NodeList length: %d\n", $list -> length);
foreach ($list as $node) {
printf ("item/@id -> %s\n", $node -> getAttribute('id'));
}
結果:
NodeList length: 5
item/@id -> div1
item/@id -> div2
item/@id -> p1
item/@id -> div3
item/@id -> p2
是的,你說得對,我已經意識到了自己。但是謝謝你! – newtover