Существуют разные способы написания совпадающего XPath в зависимости от того, как именно вы хотите, чтобы совпадение было выполнено.Вот несколько вариантов:
Найти базу, где есть также <bar>AAA</bar>
, хотя не обязательно предшествующий ему (хотя он может следовать после или между ними могут быть другие элементы):
foo[bar = 'AAA']/baz
Найти базу, которой предшествует <bar>AAA</bar>
:
foo/baz[preceding-sibling::bar = 'AAA']
foo/bar[. = 'AAA']/following-sibling::baz
Найти базу немедленно , которой предшествует <bar>AAA</bar>
:
foo/baz[preceding-sibling::*[1]/self::bar = 'AAA']
foo/bar[. = 'AAA']/following-sibling::*[1]/self::baz
Найти <bar>AAA</bar>
и вернуть любой элемент, следующий сразу за ним, необязательно с именем baz.
foo/bar[. = 'AAA']/following-sibling::*[1]