2013-03-01 24 views
0

我有一個這樣的XML文件(但有許多藥物和合作夥伴的條目):XQuery來返回一個對象及其關聯參考

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

我想拔出藥物和目標。你可以看到這兩者是由夥伴ID相互關聯的。是否有辦法在單個xquery語句中獲得藥物名稱和合作夥伴基因名稱?

回答

3

有幾種方法可以做到這一點,但假設你想從大量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 } 
    } 

如果有可能是百藥多個性伴侶,那麼你可能需要使用用於合作伙伴的元素而不是輸出中的屬性。