XPath选择具有某个属性值的节点等于某个其他节点的属性值

Jin*_*won 79 xpath

<grand id="grand">
  <parent>
    <child age="18" id="#not-grand"/>
    <child age="20" id="#grand"/> <!-- This is what I want to locate -->
  </parent>
</grand>
Run Code Online (Sandbox Code Playgroud)

有谁能告诉我如何表达定位第二个孩子?

这不起作用......

"/grand/parent/child[@id=concat('#',/grand/@id)]/@age"
Run Code Online (Sandbox Code Playgroud)

谢谢.


对不起.表达式还可以.我发现我在其他领域遇到了一些问题而不是表达本身.

Vam*_*rni 86

此XPath特定于您提供的代码段.您可以编写<child>以id 选择.#grand//child[@id='#grand']

要变老 //child[@id='#grand']/@age

希望这可以帮助


Mar*_*coS 28

我想这就是你想要的:

/grand/parent/child[@id="#grand"]
Run Code Online (Sandbox Code Playgroud)

  • 谢谢MarcoS.我的意思是引用表达式('/ grand/@ id')进行一次评估而不是应该首先评估的值('#grand'). (2认同)
  • @ jin-kwon:我明白了.所以,你是XPath就好了. (2认同)