祖先与祖先或自我之间的差异

时间:2015-06-21 11:06:09

标签: xslt selenium xpath selenium-webdriver

我知道xpath中的祖先,但是这个祖先或自我是什么。 当我们必须使用祖先或自我。请给我任何例子。

2 个答案:

答案 0 :(得分:7)

我认为轴名称是不言自明的。 ancestor轴选择当前上下文元素的祖先,而ancestor-or-self选择祖先和当前元素本身。例如,请考虑以下XML:

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

使用ancestor轴的以下xpath会找到项b,因为它target属性等于truebcontext的祖先1}}元素。但是XPath不会选择context元素本身,尽管target等于true

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

xpath tester中上述XPath的输出:

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" />'

答案 1 :(得分:0)

祖先和祖先是XPath Axes。轴是相对于当前节点的节点集。

祖先轴选择当前节点的所有祖先,即父亲,祖父母等,而祖先或自我选择当前节点和当前节点本身的所有祖先,即父亲,祖父母等。

Ancestor-or-self通常用于定位XML文档标签,或者用于XSLT,它是XML的转换语言,旨在将结构化文档转换为其他格式(如XML,HTML和纯文本)

我相信您可能不需要这些轴​​在Selenium Webdriver中找到XPath,因为它处理HTML标记而不是XML标记,并且还有许多其他XPath轴可能有助于查找元素。