You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

XPath 1.0多子节点匹配:筛选匹配对应var节点的target节点

XPath 1.0 查询匹配对应var节点的target节点

示例XML

<doc>
  <target>
    <name>V1</name>
    <value>3</value>
    <more>foo</more>
  </target>
  <target>
    <name>V3</name>
    <value>5</value>
    <more>bar</more>
  </target>
  <var>
    <name>V1</name>
    <value>3</value>
  </var>
  <var>
    <name>V2</name>
    <value>3</value>
  </var>
</doc>

需求

需要查询返回所有存在同一var节点的target节点,要求该var节点的name和value子节点与target的完全匹配。上述示例中应无匹配结果。

原查询问题

原查询语句:

//target[//var/name=name and //var/value=value]

该语句错误地将不同var节点的name和value分开匹配,导致第一个target被误匹配——它匹配了一个var的name和另一个var的value,而非同一var节点的两个属性。

正确的XPath 1.0 查询语句

//target[exists(//var[name=current()/name and value=current()/value])]

解释

  • 使用current()函数引用当前遍历的target节点,确保是和同一个var节点的name、value同时匹配,而非分别匹配不同var的属性。
  • exists()函数用于判断是否存在符合条件的var节点,只有存在时才返回对应的target节点。

内容的提问来源于stack exchange,提问作者3rady

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 11:45:55