Следующее должно делать то, что вы после:
/root/user[login='user1' and
name='User 1' and
profile='admin' and
profile='operator']
Наличие двух тестов для значения profile
может показаться странным, но, поскольку имеется несколько profile
узлов, условие будет выполнено, если хотя бы один узел соответствует тесту.
Причина, по которой вы можете сравнить profile
напрямую с string
, даже если это на самом деле node
, заключается в том, что string-value
узла элемента - это string-value
всех его потомков, соединенных вместе, что в данном случае это просто содержимое value
.
Если бы profile
содержал больше элементов, чем value
, вам пришлось бы использовать чуть более сложный тест предикатов, чтобы определить наличие соответствующего узла profile
на основе только value
(это должно работать с вашим обновленный вопрос):
/root/user[login='user1' and
name='User 1' and
profile[value='admin'] and
profile[value='operator']]