Еще раз о различных узлах (на основе значений атрибутов) в наборе узлов.
Представьте, что у вас есть следующая структура:
<struct>
<a>
<x id="1">a_1</x>
<x id="2">a_2</x>
<x id="3">a_3</x>
</a>
<b inherits="a">
<x id="2">b_2</x>
</b>
</struct>
<struct/>
может содержать несколько элементов, таких как <b/>
, которые наследуют один и тот же <a/>
. В то же время допускается несколько элементов, таких как <a/>
. Порядок <a/>
с и <b/>
с является произвольным. Наследование одноуровневое.
Вопрос : Как создать одиночный XPath, который выбирает следующий набор узлов для данного <b/>
:
<x id="1">a_1</x>
<x id="2">b_2</x>
<x id="3">a_3</x>
Обратите внимание на значение b_2
во второй строке.
Какие-нибудь решения для этого?
Обновление:
Полученный XPath должен иметь следующую форму: b[(magic_xpath)[@id=2]='b_2']
, где magic_xpath
выбирает различные <x/>
s из <a/>
s и <b/>
s.
Реальная жизнь <struct/>
может выглядеть так:
<struct>
<a>
<x id="1">a_1</x>
<x id="2">a_2</x>
<x id="3">a_3</x>
</a>
<b inherits="a">
<x id="2">I don't match resulting XPath</x>
</b>
<b inherits="a">
<x id="2">b_2</x>
</b>
</struct>