0
當我在google.com執行Chrome開發人員工具控制檯上的這些XPath表達式,我得到了相同的結果XPath中的//和.//有什麼區別?
$x("(.//*[@id='gs_lc0'])")
$x("(//*[@id='gs_lc0'])")
什麼是使用點在XPath中?
當我在google.com執行Chrome開發人員工具控制檯上的這些XPath表達式,我得到了相同的結果XPath中的//和.//有什麼區別?
$x("(.//*[@id='gs_lc0'])")
$x("(//*[@id='gs_lc0'])")
什麼是使用點在XPath中?
在XPath中,//
和.//
均爲句法縮寫:
//
是短期的/descendant-or-self::node()/
.//
是短期的self::node()/descendant-or-self::node()/
的descendant-or-self
軸包含上下文節點和所有後代的上下文節點。 因此,//
和.//
之間的差異減少到上下文節點的差異。
對於//
,上下文節點是根節點; //
是absolute location path。
對於.//
,上下文節點取決於上下文; .//
是relative location path。在Google Developer Tools控制檯的頂級評估中,上下文節點是根節點,因此您會看到相同的結果。
簡而言之:
//
當你想從整個文檔中選擇節點。.//
。
一個**(//)**是一個絕對路徑,另一個**(.//)**是一個相對路徑。 **(.//)**選擇不同的節點集,其中**(。)**表示它從當前節點開始。另一方面,使用**(//)**將選擇具有您提供的屬性的所有元素節點。 – Codexer
我不這麼認爲,因爲絕對路徑是建立使用/ 像 /HTML /體/ H1 都是相對路徑 –
@PedroMachado:擁有你的問題[**得到答覆**](HTTP:/ /stackoverflow.com/a/39903294/290085)滿意嗎? – kjhughes