Xpath - 文本包含多个值

Xpath - Text Contains multiple values

我需要一个 xpath 它将 return OutletActivityId 其中相应的 OutletName 和 ActivityName 具有特定值.

xml 回复的图片附在下方。

我已经尝试 xpath 如下查询,但还没有成功

declare namespace ref='http://api.socialservices.gov.au/ebo/DataCollection/Organisation';
//ref:OutletName[contains(text(),'${#Project#u_OutletName}') and ref:ActivityName[contains(text(),'${#Project#u_ActivityName}')]/../ref:OutletActivityId

这是一种可能的 XPath:(为了便于阅读而格式化)

declare namespace ref='http://api.socialservices.gov.au/ebo/DataCollection/Organisation'; 
//ref:OutletActivity[
    ref:OutletName[contains(.,'${#Project#u_OutletName}')] 
        and 
    ref:ActivityName[contains(.,'${#Project#u_ActivityName}')]
]/ref:OutletActivityId

简要说明:

  • //ref:OutletActivity : 在 XML 中的任意位置找到 OutletActivity 元素,其中满足以下条件
  • ref:OutletName[contains(.,'${#Project#u_OutletName}')] :(条件 1)具有包含文本 "${#Project#u_OutletName}"
  • 的子元素 OutletName
  • ref:ActivityName[contains(.,'${#Project#u_ActivityName}')] :(条件 2)并且具有包含文本 "${#Project#u_ActivityName}"
  • 的子元素 ActivityName
  • /ref:OutletActivityId : 从这样的 OutletActivity, return 子元素 OutletActivityId

如果一个 OutletActivity 只能有一个 OutletName 和一个 ActivityName 子元素,那么以下稍微短一点的 XPath 应该也可以工作:

//ref:OutletActivity[
    contains(ref:OutletName,'${#Project#u_OutletName}')
        and 
    contains(ref:ActivityName,'${#Project#u_ActivityName}')
]/ref:OutletActivityId