Xquery返回一个对象及其关联的引用

时间:2013-03-01 17:03:07

标签: xml xquery

我有一个这样的XML文件(但有许多药物和合作伙伴条目):

<drugs>
  <drug>
    <name>abc</name>
    <target partner="100" />
  </drug>
  <partner id="100">
    <name>gene</name>
  </partner>
</drugs>

我想拔出药物和目标。您可以看到两者通过合作伙伴ID相互关联。有没有办法在单个xquery语句中获取药物名称和伙伴基因名称?

1 个答案:

答案 0 :(得分:4)

有几种方法可以做到这一点,但假设您希望从更大的XML数据集中获取所有关联:

for $d in $drugs/drug
let $partner := $drugs/partner[@id = $d/target/@partner]
return
  element assoc {
    attribute drug-name { $d/name },
    attribute partner-name { $partner/name }
  }

如果每种药物可能有多个合作伙伴,那么您可能希望使用合作伙伴的元素而不是输出中的属性。