XPath, выбрав node с некоторым значением атрибута, равным некоторому другому значению атрибута node

<grand id="grand">
  <parent>
    <child age="18" id="#not-grand"/>
    <child age="20" id="#grand"/> <!-- This is what I want to locate -->
  </parent>
</grand>

Может ли кто-нибудь сказать мне, как выразить поиск второго ребенка?

Это не работает...

"/grand/parent/child[@id=concat('#',/grand/@id)]/@age"

Спасибо.


Прости. Выражение в порядке. Я обнаружил, что у меня есть некоторые проблемы в другой области, а не в самом выражении.

Ответ 1

Этот XPath специфичен для фрагмента кода, который вы предоставили. Чтобы выбрать <child> с id как #grand, вы можете написать //child[@id='#grand'].

Чтобы получить возраст //child[@id='#grand']/@age

Надеюсь, что это поможет

Ответ 2

Я думаю, что это то, что вы хотите:

/grand/parent/child[@id="#grand"]