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.

130247 次浏览

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"]