是否可以评估xpath表达式中的值?

时间:2015-01-09 22:41:34

标签: xpath

我能否以某种方式在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

然而,这似乎不起作用(除非我以某种方式弄错了)。

有什么想法吗?

1 个答案:

答案 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