Этот селектор 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.