Какой правильный синтаксис XPath для получения значения элемента, используя значение другого элемента на том же уровне? - PullRequest
0 голосов
/ 15 января 2020

Учитывая приведенное ниже XML, каково правильное выражение XPath для извлечения значения id для заданного значения имени?

(например: я хочу, чтобы xmllint возвращал значение id "someID" при получении значение имени "someName")

<?xml version="1.0" encoding="UTF-8"?>
    <record>
        <attributes>
            <attribute>
                <id>someID</id>
                <name>someName</name>
            </attribute>
            <attribute>
                <id>someOtherID</id>
                <name>someOtherName</name>
            </attribute>
        </attributes>
    </records>

Ответы [ 2 ]

0 голосов
/ 15 января 2020

Какое правильное выражение XPath

Нет единого правильного ответа. Есть много способов выбрать id на основе родного брата name.

Другой ответ (сейчас только один) показывает два способа. Вот еще два ...

xmllint --xpath '//id[../name="someName"]/text()' input_file.xml

и

xmllint --xpath '//attribute[name="someName"]/id/text()' input_file.xml
0 голосов
/ 15 января 2020

Вам нужна ось сестры .

xmllint --xpath '//name[.="someName"]/preceding-sibling::id/text()' file.xml

Или вы можете go до attribute и обратно до id:

'//name[.="someName"]/../id/text()'
...