Xpath返回从第n个开始的所有h2节点

Xpath返回从第n个开始的所有h2节点,xpath,Xpath,我在一个页面上有几个h2元素,xpath结果应该是一个h2元素数组,不包括前n个h2元素 <div> <h2>1</h2> <h2>2</h2> <h2>3</h2> </div> .... <div> <h2>4</h2> <h2>5</h2> ... <h2>n<h

我在一个页面上有几个h2元素,xpath结果应该是一个h2元素数组,不包括前n个h2元素

<div>
    <h2>1</h2>
    <h2>2</h2>
    <h2>3</h2>
</div>
....
<div>
    <h2>4</h2>
    <h2>5</h2>
    ...
    <h2>n<h2>
</div>

1.
2.
3.
....
4.
5.
...
N

这个问题不够具体,无法给出准确的答案,但其思想是,您可以使用
位置()
过滤器获取所有
元素,除了
位置
小于
n
的元素

例如,假设
n
1
,可以执行以下操作:

//h2[position()>1]
考虑到这种简单的结构化XML输入:

<root>
    <h2>1</h2>
    <h2>2</h2>
    <h2>3</h2>
</root>

1.
2.
3.
上面的XPath将返回以下元素:

<h2>2</h2>
<h2>3</h2>
2
3.

当然,用您想要的任何实际值替换n…

找到了正确答案,这对我很有用:

//descendant::h2[position()>n
如果我想在第n个元素之后得到m个元素,那么

//descendant::h2[position()>n and position()<last()-m]

//后代::h2[position()>n和position()正确的方法是:

(//h2)[position() > n]

(//h2)[position()>n和position()

把它们两边都绑定起来。
//h2
周围的括号在这里起了很大的作用。

显示了实际的XML,请问这是xpath 2.0特有的吗?因为当我在Google Chrome控制台中这样测试时,我什么也得不到。
$x(//h2[position()>3])
这不是特定于XPath 2.0的,但它是不正确的。只有当所有
h2
元素都在同一个父元素下时,这才起作用。@JLRishe您说得对,这是因为在发布此答案时没有任何上下文,直到在18分钟左右的时间内添加了问题中的示例标记ago@har07这是一个公平的观点,但是什么时候omeone说他们“在一个页面上有几个h2元素”,正如问题最初发布时所说的,现在仍然如此,明智的做法是不要假设它们都有一个共同的父元素。请参阅我的示例,了解一个简短的方法。关于您的方法,在这两种情况下都不需要开头的斜杠。
(//h2)[position() > n]
(//h2)[position() > n and position() < last() - m]