Xpath - Как выбрать подузел, в котором sibling-node содержит определенный текст

Я хочу использовать XPath, чтобы выбрать поддерево, содержащее <name>-Tag с "ABC", а не другой из следующего XML. Это возможно? И в качестве второстепенного вопроса, какие ключевые слова я бы использовал, чтобы найти что-то подобное в Google (например, для выбора поддерева по атрибуту, для которого у меня была бы терминология)?

<root>
  <operation>
    <name>ABC</name>
    <description>Description 1</description>
  </operation>
  <operation>
    <name>DEF</name>
    <description>Description 2</description>
  </operation>
</root>

2 ответа

Решение

Используйте:

/*/operation[name='ABC']

На ваш второй вопрос: я настоятельно рекомендую не полагаться на онлайн-источники (есть такие, которые не так хороши), а читать хорошую книгу по XPath.

См. Некоторые ресурсы, перечисленные здесь: https://stackru.com/questions/339930/any-good-xslt-tutorial-book-blog-site-online/341589

На ваш первый вопрос, я думаю, что более точный способ сделать это будет:
//operation[./name[text()='ABC']],
И в соответствии с этим мы также можем сделать это:
//operation[./name[text()[.='ABC']]]

Другие вопросы по тегам