Как соотносится элемент, которому непосредственно предшествует элемент одного уровня, используя и nth-child с Xpath? - PullRequest
0 голосов
/ 26 сентября 2018

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...