我可以以某种方式使XPath查询中的值成为另一个XPath表达式吗?(希望这是可能的)
以下是我正在尝试执行的操作的简化版本:假设我有一个这样的 XML 结构:
<person>
<info>
<name>Bob</name>
<primary_residence>2</primary_residence>
</info>
<residences>
<residence>
<rid>1</rid>
<name>New York</name>
</residence>
<residence>
<rid>2</rid>
<name>London</name>
</residence>
</residences>
</person>
我想得到"主要住所"的名称。 我想做这样的事情:
/person/residences/residence[rid=XXX]/name
然后,在其中,使用如下所示的"XXX":
/person/info/primary_residence
因此,所有内容一起看起来像:
/person/residences/residence[rid=/person/info/primary_residence]/name
但是,这似乎不起作用(除非我以某种方式弄错了)。
有什么想法吗?
这将适用于任何 XPath 版本:
'/person/residences/residence[rid=/person/info/primary_residence]/name'
所以你的表达式是有效的。您的编程环境/语言是什么?
使用 XPath 3.0(或 XQuery 1.0 或更高版本):
let $r := /person/info/primary_residence
return /person/residences/residence[rid=$r]/name