我有一个这样的XML文件(但有许多药物和合作伙伴条目):
<drugs>
<drug>
<name>abc</name>
<target partner="100" />
</drug>
<partner id="100">
<name>gene</name>
</partner>
</drugs>
我想拔出药物和目标。您可以看到两者通过合作伙伴ID相互关联。有没有办法在单个xquery语句中获取药物名称和伙伴基因名称?
答案 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 }
}
如果每种药物可能有多个合作伙伴,那么您可能希望使用合作伙伴的元素而不是输出中的属性。