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']]]