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

Jin Kwon picture Jin Kwon · May 19, 2011 · Viewed 111.3k times · Source
<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.

Answer

Vaman Kulkarni picture Vaman Kulkarni · May 19, 2011

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