2011-05-19 162 views
63
​​

有没有人可以告诉我如何表达以查找第二个孩子?XPath选择具有某个属性值的节点等于某个其他节点的属性值

这不工作...

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

谢谢。


对不起。表达是好的。我发现我在其他领域遇到了一些问题,而不是表达本身。

+3

你的XPath工作正常,我。 – dogbane 2011-05-19 08:00:51

+3

我也一样 - [只是在这里测试](http://www.mizar.dk/XPath/Default.aspx),它选择第二个子元素。 – 2011-05-19 08:05:17

+1

对......表达方式正确。对不起。我在表达式(名称空间前缀)和实例文档中犯了一些错误。谢谢。 – 2011-05-19 08:33:06

回答

68

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

为了让年龄//child[@id='#grand']/@age

希望这有助于

+1

谢谢你Vaman。它有帮助。我的意思是指一次性评估的表达式('/ grand/@ id')而不是应该首先评估的值('#grand')。 – 2011-05-19 08:43:59

+3

这应该是公认的答案,因为它比OP的解决方案更容易理解。 – Bashevis 2013-03-06 07:01:04

21

我想这是你想要什么:

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

谢谢MarcoS。我的意思是指一次性评估的表达式('/ grand/@ id')而不是应该首先评估的值('#grand')。 – 2011-05-19 08:44:25

+2

@ jin-kwon:我明白了。所以,你是XPath就好了。 – MarcoS 2011-05-19 08:49:24

相关问题