是否可以计算 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

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

有什么想法吗?

这将适用于任何 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

最新更新