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

Is it possible to evaluate a value in an xpath expression?

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

我想知道 "primary residence" 的名字。我想做类似的事情:

/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'

所以你的表达是有效的。你的编程是什么 environment/language ?


使用 XPath 3.0(或 XQuery 1.0 或更高版本):

let $r := /person/info/primary_residence
return /person/residences/residence[rid=$r]/name