Xpath-每个查询可以使用多个轴吗?

时间:2019-03-05 16:29:49

标签: xpath

.//*[preceding::*[text()='Taco Salad'] and following::*[text()='Fajita Salad']]

此页面上有文本,对.//*[text()='Taco Salad'].//*[text()='Fajita Salad']的查询均返回我期望的结果。但是我有点困惑如何尝试将这些与以下和之前的方法结合起来以获取中间出现的一些选项节点。

有人有使用两个轴的工作示例吗?

我找到了这个线程:combining XPATH axes (preceding-sibling & following-sibling),并试图在此之后对轴进行建模,但是它们似乎不是有效的xapths。我缺少明显的东西吗?

2 个答案:

答案 0 :(得分:1)

不幸的是,您还没有真正告诉我们您想要实现的目标。是的,您可以使用多个轴;您可以根据想要的结果以各种不同的方式将它们组合在一起。因此,您需要解释所需的结果。在顶层使用“ and”可以简单地测试“ and”的两个操作数是否都选择某项。

您的问题“任何人都没有任何可行的例子”对您没有帮助。是的,我们可以为您提供成千上万的工作示例,但是很可能没有一个示例可以满足您的要求。

以下是组合两个轴步X和Y的一些可能方法:

X / Y-选择X,然后从此处选择Y

X和Y-如果X和Y都选择了某项,则返回true

X或Y-如果X或Y选择某项,则返回true

X | Y-返回X和Y选择的并集

X与Y相交-返回X和Y选择的相交

距离需求陈述最近的地方是“抓住中间出现的一些选项节点”。如果不查看原始文档,就很难解释这一点。在XPath 2.0中,它可能比在1.0中更容易查询,因此您确实需要告诉我们所使用的版本。

答案 1 :(得分:0)

在单个xpath中组合轴的工作示例可以是:

//*[following-sibling::*[@class="bottom-notice"] and preceding-sibling::*[@name="new-answer"]]

它将寻找元素form将此答案写在此页面上。