1

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

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

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

4

1 回答 1

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 }
  }

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

于 2013-03-01T17:08:46.527 回答