2015-06-21 128 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

感谢您的解释 –