我有一段类似于以下内容的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)告诉我没有这样的函数。
任何提示或想法?
答案 0 :(得分:0)
在XPath中,只有一个“当前”节点/上下文。我认为不可能在一个XPath表达式中执行您想要的操作。
为了关联除结构之外的两个节点(如祖先,子节点,兄弟节点等轴),您需要多个XPath并使用另一个节点的结果,即在变量中获取./key/text()
并且将其用于???
。