Вы можете индексировать узел, которому хотите соответствовать:
//div[normalize-space(text()[2])='baz']
Вышеупомянутое выражение соответствует второму text()
дочернему элементу div
элементов.
Другой (более конкретный) вариант таков:
//div[normalize-space(text()[1]) = 'baz' or text()/normalize-space(following-sibling::text()) = 'baz']
При этом проверяется первое нормализованное значение text()
и после этого все нормализованные последующие братья и сестры для значения baz
.Но это работает только с XPath-2.0, поэтому я не упоминал об этом раньше.
Во всех трех случаях результат для вашего примера:
<?xml version="1.0"?>
foo
bar
baz