Возможно, я здесь пытаюсь сделать что-то недопустимое, но, может быть, кто-то умнее меня знает правильный синтаксис для решения моей проблемы.
Дано:
<group code="vehicle">
<line code="car">
<cell>
<box code="price">1000.00</box>
</cell>
</line>
<line code="car">
<cell code="sports">
<box code="price">500.00</box>
</cell>
</line>
</group>
Если я использую
//*[@code="vehicle"]//*[@code="car"]//*[@code="price"]
, я верну оба поля (1000,00 и 500,00) - как положено, но не то, что я хочу.
Существует ли синтаксис xpath, который будет сравнивать все узлы, которые имеют атрибут @code, а не пропускать его, если он не совпадает с конечным результатом, поскольку я получаю только первое поле (цена 1000,00)? Как и при запросе, выберите первый узел с @code, и этот @code должен равняться «vehicle», затем выберите следующий узел с @code, а этот @code должен равняться «car», затем выберите следующий узел с @code и @code должен равная "цена".