2013-08-02 210 views
1

我在以下集合中不存在-DB XML文件:查询集合

  • /DB/OCR/Everest_Bank /(XML文件在这里)
  • /DB/OCR/Siddhartha_Bank /(XML文件在这里)
  • /DB/OCR/ABC_Bank /(XML文件在这里)

我想运行在所有的 “银行” 的/ DB/OCR集合中的XQuery满足条件并想要返回满足条件的银行的名称。我写了一个查询,但卡在FLWOR表达式的返回部分。

declare default element namespace 'http://www.xbrl.org/2003/instance'; 
declare namespace ifrs = 'http://xbrl.ifrs.org/taxonomy/2013-03-28/ifrs'; 

for $x in collection("/db/OCR") 
let $z := $x/xbrl/ifrs:Assets (: want to have query in assets of all files in the banks :) 
return 
    if (exists($z) and xs:integer($z/text())>9999999) 
    then ??? 

现在我该如何返回符合我的条件的结果的集合名称,如“Everest_Bank”?请帮忙。

回答

2

通用和可移植的方法来做到这一点XQuery的引擎是:

document-uri(root($z)) 

会给你的存在,但分贝文档的URI;收集信息在URI中;

的存在,但DB特定的方式(警告:无法移植到其他XQuery实现)是:

util:collection-name($z) 
http://exist-db.org/xquery/util函数命名空间

+0

谢谢你。它通过获得满足条件的文件以及文档 - uri来解决我的问题。现在我可以做的是砍掉其余部分并获取银行名称。 +1再次感谢。 – Pant