Шаблон, который вы пытаетесь использовать, выбирает корневые узлы с именем Test
.
Вы можете использовать шаблон (//text()|//@*)[contains(string(), "test")]
, который выбирает атрибуты, содержащие строку test
или текстовые узлы , которые ее содержат (то есть не элементы).
Но вы хотите выбрать элементы, верно? Использование (//*|//@*)[contains(., "test")]
делает это, но выбирает элементы, которые содержат строку test
, даже если это через какой-то дочерний элемент, что тоже не то, что нужно.
Так что я думаю, вам придется использовать что-то вроде (//*[contains(text(), "test")]|//@*[contains(., "test")])
, которое дает вам то, что вы хотите, но не очень красиво.