通过查找“关系”元素来访问“相关”节点的XPath查询

时间:2013-11-21 09:28:03

标签: xml xpath

我有一段类似于以下内容的XML:

<root>
  <person>
     <key>1</key>
  </person>
  <person>
     <key>2</key>
  </person>
  <dog>
     <key>3</key>
  </dog>
  <relations>
    <petOwnership>
      <personRef>1</personRef>
      <dogRef>3</dogRef>
    </petOwnership>
  </relations>
</root>

我需要一个XPath查询,从给定的人员节点开始,将返回与其相关的正确狗节点。我首先想到的是:

../dog[key=../relations/*[personRef=???]/dogRef]

我需要找到一种引用问号所在的当前人员密钥的方法。我尝试过root()函数,但我的XPath引擎(Java)告诉我没有这样的函数。

任何提示或想法?

1 个答案:

答案 0 :(得分:0)

在XPath中,只有一个“当前”节点/上下文。我认为不可能在一个XPath表达式中执行您想要的操作。

为了关联除结构之外的两个节点(如祖先,子节点,兄弟节点等轴),您需要多个XPath并使用另一个节点的结果,即在变量中获取./key/text()并且将其用于???