Как выбрать все экземпляры
element_1, которые не содержат '@'
в element_5?
Используйте
//element_1[not(.//element_5[contains(.,'@')])]
На английском языке это означает : выбрать все элементы "element_1"
в документе, у которых нет потомка "element_5"
, строковое значение которого содержит строку '@'
.
Я использую сокращение //
только потому, что структура файла XML не ясна.
Я всегда рекомендую избегать использования сокращения //
всегда, когда это возможно, потому что в противном случае это может привести к очень неэффективной оценке XPath.