2015-06-21 74 views

回答

3

軸名稱是相當不言自明的,我認爲。 ancestor軸選擇只有當前上下文元素的祖先,而ancestor-or-self選擇祖先和當前元素本身。考慮下面的XML例如:

<root> 
    <item key="a"> 
     <item key="b" target="true"> 
      <context key="c" target="true"/> 
     </item> 
    </item> 
</root> 

以下XPath它採用ancestor軸,會發現該項目b,因爲它具有target屬性等於truebcontext元素的祖先。但XPath的不會選擇context元素本身,儘管它有target等於true

//context/ancestor::*[@target='true'] 

以上的XPath的輸出xpath tester

Element='<item key="b" target="true"> 
    <context key="c" target="true" /> 
</item>' 

對比與ancestor-or-self軸將返回相同,加context元件:

//context/ancestor-or-self::*[@target='true'] 

輸出的第二的XPath的:

Element='<item key="b" target="true"> 
    <context key="c" target="true" /> 
</item>' 
Element='<context key="c" target="true" />' 
+0

謝謝你的解釋。我明白了。 –

+0

@SeetharamanS不客氣。不要忘記[接受](http://stackoverflow.com/help/someone-answers)關閉此問題的答案之一 – har07

0

祖先和祖先或自身是XPath Axes。軸是相對於當前節點的節點集。

祖先軸選擇當前節點的所有祖先,即父,祖父母等,而祖先或自己選擇當前節點和當前節點本身的所有祖先,即父,祖父母等。

祖先或自我通常用於查找XML文檔標籤或設計爲將XML結構化文檔轉換爲其他格式(如XML,HTML和純文本)的XML轉換語言的XSLT

我相信你可能不需要這些軸​​來找到Selenium Webdriver中的XPath,因爲它處理HTML標籤而不是XML標籤,還有許多其他XPath軸可能有助於查找元素。

+0

感謝您的解釋 –