如何使用xpath和nth-child匹配紧接在同级元素之后的元素?

时间:2018-09-26 03:16:48

标签: xml xpath css-selectors

此选择器foo > [baz=3] ~ bar等效于//foo/[@baz="3"]/following-sibling::bar xpath

此选择器foo > :nth-child(2n+1)等效于//foo/[position() mod 2=1] xpath

使用此结构:

<foo>
    <bar baz="1">one</bar>
    <bar baz="2">two</bar>
    <bar baz="3">tree</bar>
    <bar baz="4">four</bar>
    <bar baz="5">five</bar>
    <bar baz="6">six</bar>
    <bar baz="7">seven</bar>
    <bar baz="8">eight</bar>
    <bar baz="9">nine</bar>
    <bar baz="10">ten</bar>
</foo>
  • //foo/[@baz="3"]/following-sibling::bar匹配/返回:

    <bar baz="4">four</bar>
    <bar baz="5">five</bar>
    <bar baz="6">six</bar>
    <bar baz="7">seven</bar>
    <bar baz="8">eight</bar>
    <bar baz="9">nine</bar>
    <bar baz="10">ten</bar>
    
  • //foo/[position() mod 2=1]匹配/返回:

    <bar baz="1">one</bar>
    <bar baz="3">tree</bar>
    <bar baz="5">five</bar>
    <bar baz="7">seven</bar>
    <bar baz="9">nine</bar>
    

但是,当结合following-sibling::position()时,position()计数元素由following-sibling::而不是由父元素中的所有子元素组成(例如:<foo>标签) ,我想在Xpath中这样做:

foo > [bar=3]:nth-child(2n+1)

但是这个//foo/[@baz="3"]/following-sibling::[position() mod 2=1]不起作用(因为位置不从第一个子元素算起)

我该怎么做?

  

注意::我正在创建CSS到Xpath的转换器。

0 个答案:

没有答案