Я новичок в XPATH и пытаюсь понять, как выбрать теги из следующего кода:
<content>
<par>
<include.text>
<RefControl/>
</include.text>
<linebreak/>
<include.text>
<RefControl/>
</include.text>
<linebreak/>
<include.text>
<RefControl/>
</include.text>
<linebreak/>
<include.text>
<RefControl/>
</include.text>, T3C</par>
</content>
Я могу выбрать первый тег <include.text>
, используя следующий XPATH: //include.text[not(preceding-sibling::node())]
.
Я согласен с этим (мне нужно, чтобы он отличался от <include.text>
тегов, которые по-разному используются в XML).
Итак, какие выражения XPATH мне нужны:
1) Выражение XPATH, которое выбирает тег <linebreak>
НЕ на основе <par>
(в данном случае), а на основе непосредственно следующего <include.text>
. Я бы подумал что-то вроде этого: //include.text/preceding-sibling::linebreak
, но это не работает.
2) Выражение XPATH, которое выбирает теги <include.text>
, которые НЕ следуют сразу за <par>
. Я не могу использовать «нет предшествующих братьев и сестер» (как указано выше), потому что есть предшествующие братья и сестры. Мне по-прежнему необходимо различать ВСЕ <include.text>
теги, используемые в разных позициях в XML, однако (поэтому также нет //include.text
).
Примечание: <par>
является произвольным (это может быть другим именем тега тоже), поэтому я не могу использовать его в XPATH.
Надеюсь, я четко объяснил это. Спасибо за любую помощь!