我能否以某种方式在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
然而,这似乎不起作用(除非我以某种方式弄错了)。
有什么想法吗?
答案 0 :(得分:1)
这适用于任何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