[xpath] XPath selecting a node with some attribute value equals to some other node's attribute value

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

Can anybody tell me how to express for locating the second child?

This doesn't work...

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

Thank you.


I'm sorry. The expression is OK. I found I got some problems in other area not the expression itself.

This question is related to xpath

The answer is


This XPath is specific to the code snippet you've provided. To select <child> with id as #grand you can write //child[@id='#grand'].

To get age //child[@id='#grand']/@age

Hope this helps


I think this is what you want:

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