XPath的可以做跨XML的两个子树外键查找?(Can XPath do a foreign key

2019-07-17 22:31发布

说我有以下XML ...

<root>
  <base>
    <tent key="1" color="red"/>
    <tent key="2" color="yellow"/>
    <tent key="3" color="blue"/>
  </base>
  <bucket>
    <tent key="1"/>
    <tent key="3"/>
  </bucket>
</root>

......会中的XPath是什么,返回的“桶”中包含“红”“蓝”?

Answer 1:

如果您使用XSLT,我建议建立一个键:

<xsl:key name="tents" match="base/tent" use="@key" />

然后,您可以得到<tent><base>与特定key使用

key('tents', $id)

然后,你可以做

key('tents', /root/bucket/tent/@key)/@color

或者,如果$bucket是一个特定的<bucket>元素,

key('tents', $bucket/tent/@key)/@color


Answer 2:

我认为这将工作:

/root/base/tent[/root/bucket/tent/@key = @key ]/@color


Answer 3:

这不是漂亮。 对于任何查询,您需要使用电流():

/根/桶[/根/基/10吨[@key =电流()/帐篷/ @键] / @颜色= '蓝色' 或/根/基/10吨[@key =电流()/帐篷/ @键] / @颜色= '红色']



Answer 4:

JeniT有这里列出相应的反应/代码。 你需要你走在XML文档之前创建的键,然后针对重点进行匹配。



文章来源: Can XPath do a foreign key lookup across two subtrees of an XML?