《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 基于XQuery的商業報告查詢引擎的設計與實現
基于XQuery的商業報告查詢引擎的設計與實現
來源:微型機與應用2013年第12期
王曉琳1, 樸 勇1, 王秀坤2
(1. 大連理工大學 軟件學院, 遼寧 大連116621; 2. 大連理工大學 電信學院, 遼寧
摘要: 基于XQuery查詢語言的XBRL查詢引擎首先借助JavaCC工具處理輸入的XQuery語句形成抽象語法樹,而后根據XQuery查詢特點編寫程序遍歷此語法樹來簡化查詢語言的處理流程,降低查詢匹配的復雜度,提高查詢效率,利用“SAX+ DOM”方式解析XBRL文件并提取XQuery語句所查詢的數據信息。SAX方法可以提高查詢效率并節省內存消耗,DOM方法可以支持對XBRL文件的上下文相關查詢及頻繁查詢。實驗證明,將二者結合起來應用滿足高查詢效率和低內存消耗雙重需求。
關鍵詞: 軟件 XBRL XQuery 解析器
Abstract:
Key words :

摘 要: 基于XQuery查詢語言的XBRL查詢引擎首先借助JavaCC工具處理輸入的XQuery語句形成抽象語法樹,而后根據XQuery查詢特點編寫程序遍歷此語法樹來簡化查詢語言的處理流程,降低查詢匹配的復雜度,提高查詢效率,利用“SAX+ DOM”方式解析XBRL文件并提取XQuery語句所查詢的數據信息。SAX方法可以提高查詢效率并節省內存消耗,DOM方法可以支持對XBRL文件的上下文相關查詢及頻繁查詢。實驗證明,將二者結合起來應用滿足高查詢效率和低內存消耗雙重需求。
關鍵詞: XBRL; XQuery; 解析器

    XBRL[1](可擴展商業報告語言)是XML語言的擴展應用,主要面向金融財政領域,對其進行數據挖掘和分析具有重大意義,在實際項目中如何方便高效率地對其進行數據提取并降低內存消耗是需要解決的問題。
     W3C制定的XQuery語言中的FLOWR[2]可以高效率地對XBRL進行查詢處理,目前國內外有很多支持XQuery查詢語言的查詢引擎,如國外開源的XQEngine是一個基于JavaBean的用來查詢本地XML文檔的XQuery查詢引擎,該引擎使用SAX[3]解析方式來解析并提取XML中的所需信息,節省了內存也保證了查詢速度。但是由于XBRL中的實例文件是承載財政數據的文件,其節點間存在密切的數據關聯關系,用戶多使用頻繁查詢及復合查詢等查詢實例文件進行數據分析,“邊讀邊扔數據”的SAX方式無法滿足這一需求。本文提出的SAX+DOM方式可以解決這一問題,同時在一定程度上比純DOM[4]讀取方式節省了大量內存。
    圖1給出了基于XQuery的商業報告查詢引擎的整體框架,主要分為XQuery預處理模塊、查詢優化器和查詢執行器3個模塊。傳統的查詢優化包括Schema模式優化[5]、 XQuery語句查詢重寫、XML文檔索引技術、XQuery語句規范化等[6],而本文涉及的解析方式創新及抽象樹的遍歷簡化則是從查詢引擎內部實現角度對XQuery查詢進行了優化,下面著重對查詢引擎內部優化中的XQuery預處理模塊及查詢執行器進行具體闡述。

1 遍歷Javacc生成的抽象語法樹
     XQuery查詢語言被設計用來查詢XML(XBRL本質上也為XML)文件,其語法中的FLWOR表達式是最重要的,它代表 For-Let-Where-Order by-Return。For子句通過將節點綁定到變量,以便繼續循環遍歷序列中的每一個節點;let子句為一個變量賦一個值或一個序列;return 子句定義每個元組要返回的內容;對于where子句,如果其有效布爾值為真,那么該元組就被保留,并且它的變量綁定用在return子句中,反之該元組就被廢棄[7]。
    在查詢預處理模塊,通過JavaCC[8]工具和W3C已定義的XQuery語法規則來進行詞法分析,將輸入的XQuery語句查詢語句中的每個成分都變成帶有特定屬性的節點并生成與之相對應的類(例如顯示的是MainModule等,則語法解析時JavaCC中的JJtree以這些類為節點在內存中生成樹形結構),然后編寫程序遍歷抽象語法樹。下面的算法流程為遍歷FLOWR表達式中For語句對應的抽象語法樹分支的流程,其中MainModule等均為使用JavaCC工具并根據W3C XQuery規范中XQuery BNF定義生成的語法樹中的抽象樹節點名字。XQuery語句解析算法的流程圖如圖2所示,首先取得根節點XQuery開始處理語法樹的內容,循環三次依次得到QueryList、Module和MainModule節點。

    判斷節點MainModule是否為null,如為null,則報錯;如果不為null,取出第一個節點prolog和第二個節點QueryBody,分別對這兩個節點進行分析處理。
    對prolog節點進行處理,左節點prefix和右節點url為命名空間的格式,保存為名值對。在實際項目操作中,QueryBody環節只會出現一個FLOWR語句,很少會有嵌套語句,本文只給出FLOWR的子節點為ForClause的情況,其他子節點暫不考慮。
    判斷ForClause子節點類型,若為用來表示變量所對應的Xpath值PathExpr節點,則取出PathExpr節點的子節點判斷其類型。節點為函數的情況下則調用預定義函數,根據字段名稱在節點樹中定位并保存其內容;如節點類型為分隔符,則表示任意節點都可以作為下一個節點字段的起始狀態。最后將PathExpr節點的處理結果ResultList與Varname變量節點對應并保存。
2 結合SAX和DOM解析XBRL文件
    對于XBRL文件來說,存在DOM和SAX兩種基本的解析手段。如果進行一次性查詢或非頻繁性查詢,建議采用內存消耗小的基于事件驅動模型的SAX解析方式,無需像DOM解析方式中為所有節點創建對象。但當需要大量上下文相關查詢及頻繁查詢時,尤其在查詢后經修改合并而得到的結果集上進行復查詢,則采用DOM方式為好。
    XBRL文件解析分為兩種情況: (1)分類標準比較穩定,對其進行首次框架解析后將在數據庫中將其保存,可以采取單獨的SAX解析方式簡單地進行逐條解析;(2)實例文件承載大量重要數據,用戶多使用頻繁查詢及復合查詢等查詢實例文件來進行數據分析,在這種情況下DOM解析方式是最好的選擇。但是實例文件數量較多時,為XBRL實例文件中所有節點創建對象會大大增加內存需求。這時需要考慮將這兩種方式結合起來使用。在讀取實例文件數據時,利用SAX只讀取用戶所需要的若干小數據文件,并為小數據文件在內存中建立DOM對象,每次讀取新的數據片段,則在已存在的DOM對象上進行添加或者修改等操作。這樣做既有效地節省了大量資源,也充分利用了DOM對象的易操作性。
    圖3為兩種解析方式結合的工作原理,其處理過程為:首先SAX對象objSAX的parse方法被調用來解析XBRL實例文件,在startElement事件中進行元素篩選,如為所需元素,則保存該元素及其子節點元素,在endElement事件中調用DOM對象的loadXML()方法將數據轉化為DOM樹,從而可以方便下一步的數據處理(如頻繁查詢、信息更新等)。這樣不僅保證了快速解析,也在更大程度上支持XQuery的上下文查詢及信息檢索。

3 系統實驗結果
    實驗環境采用Inter Pentium Dual E2160 @1.80 GHz、1 GB 內存、Windows XP。
    本文引擎解析文件時利用SAX+DOM方式,下面的實驗結果證明了使用這種方式的優勢,如圖4所示。使用SAX+DOM方式處理時,只需將所需內容裝入內存,故文檔處理的時間不會因為文檔的大小發生太大變化,事件均小于0.003 s。而采用DOM方法處理文檔,當文檔大小達到一定程度時,需要使用硬盤的虛擬內存,其處理時間也會急劇增大。


    本文所提出的查詢引擎簡化了XQuery語句解析流程和復雜度,節點尋址路線相對于開源軟件XQEngine變得簡單。本實驗利用上述兩種引擎對中國Taxonomy的cas_core_2010-09-30.xsd文件進行查詢,查詢語句如圖5所示,兩個解析器都正確地返回結果2 847個節點。本文提出的查詢引擎用時1.25 s,XQEngine因其復雜的XQuery解析算法使得用時稍長,為3.7 s。

 

 

    本文在深入剖析XQuery查詢語法特點后,結合“SAX+自定義DOM”文件解析方式完成對FLWOR抽象語法樹的遍歷及查詢信息讀取,來簡化XQuery語句的查詢處理流程并降低查詢匹配的復雜度,設計并實現了XBR查詢引擎,提高了查詢效率,降低了內存消耗。該引擎在項目中的數據信息查詢模塊起著重要作用。
參考文獻
[1] 呂科,劉曉峰.XBRL技術原理與應用[M].北京:電子工業出版社,2007.
[2] WALMSLEY P. XQuery權威指南[M].王銀輝,譯.北京:電子工業出版社, 2009.
[3] 馮進,丁博,史殿習,等.XML解析技術研究[J].計算機工程與科學,2009,31(2):120-124.
[4] 楊波.DOM解析器OnceDOMParser的設計與實現[D].北京:中國科學院研究生院(軟件研究所),2005.
[5] 孟曉峰,王宇,王小峰. XML查詢優化研究[J]. 軟件學報, 2006,17(10):2069-20.
[6] PAPARIZOS S, PATEL J M, JAGADISH H V. SIGOPT:Using schema to optimize XML query processing international[C]. Istanbul: International Conference on Data Engineering, 2007.
[7] 華珊珊,謝鉉洋.XML查詢語言XQuery的研究與實現[J].計算機技術與發展, 2009,19(4): 48-50.
[8] VISWANDAHA S, SANKAR S. Java Compiler Compiler(JavaCC)-The java papser generator[J].URL:https://javaCC.dev.java.net.2006.

此內容為AET網站原創,未經授權禁止轉載。
热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          久久久久青草大香线综合精品| 久久av一区二区三区| 日韩视频在线免费| 精品福利av| 亚洲视频一二区| 久久综合久久美利坚合众国| 欧美va亚洲va国产综合| 欧美日韩免费观看一区二区三区| 狠狠色噜噜狠狠色综合久| 国内一区二区在线视频观看| 欧美日韩成人在线视频| 亚洲国产另类 国产精品国产免费| 久久综合久色欧美综合狠狠| 91久久久一线二线三线品牌| 亚洲伊人第一页| 欧美日韩免费一区二区三区| 国产一区二区三区丝袜| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产在线拍偷自揄拍精品| 欧美日韩在线不卡| 国产精品久久一区二区三区| 亚洲欧洲一区| 亚洲在线1234| 亚洲中无吗在线| 欧美成人免费大片| 国产精品v一区二区三区| 欧美性色aⅴ视频一区日韩精品| 加勒比av一区二区| 欧美日韩国产一区二区三区地区| 午夜精品一区二区三区在线播放| 乱人伦精品视频在线观看| 亚洲激情一区二区三区| 一本色道久久综合狠狠躁的推荐| 欧美大片在线看免费观看| 欧美精品国产精品| 亚洲精品一区二区三区樱花| 国产乱码精品一区二区三区av| 亚洲无线一线二线三线区别av| 亚洲欧美日韩国产成人| 欧美在线在线| 国产精品久久九九| 久久久青草青青国产亚洲免观| 午夜日韩av| 久久国产日韩欧美| 国产三级精品在线不卡| 国产视频一区三区| 欧美国产日韩免费| 一本一本久久a久久精品综合妖精| 国产精品扒开腿爽爽爽视频| 亚洲国产日韩在线一区模特| 亚洲午夜激情网站| 国产一级精品aaaaa看| 亚洲欧美日韩高清| 欧美日韩国产综合一区二区| 久久人人爽国产| 久久中文在线| 欧美韩国一区| 国产视频精品免费播放| 国产日韩欧美精品在线| 午夜精品免费| 欧美一区1区三区3区公司| 一区二区三区精品在线| 一区二区三区在线观看欧美| 亚洲美女毛片| 亚洲第一在线视频| 午夜精品视频在线观看一区二区| 欧美在线免费视屏| 欧美日本高清| 国产午夜精品麻豆| 国产精品另类一区| 91久久精品日日躁夜夜躁国产| 欧美日韩免费一区二区三区视频| 亚洲国产精品久久精品怡红院| 亚洲专区免费| 亚洲在线中文字幕| 99re6这里只有精品| 欧美日本在线观看| 欧美亚洲免费高清在线观看| 欧美日韩一区免费| 欧美特黄一级| 99国产精品久久久久老师| 亚洲理论电影网| 久久爱另类一区二区小说| 亚洲欧美国产精品桃花| 免费欧美高清视频| 亚洲国产va精品久久久不卡综合| 国产九九视频一区二区三区| 欧美成人性生活| 欧美另类久久久品| 亚洲狠狠丁香婷婷综合久久久| 欧美午夜精品理论片a级大开眼界| 欧美与欧洲交xxxx免费观看| ●精品国产综合乱码久久久久| 国产性色一区二区| 亚洲国产毛片完整版| 久久婷婷综合激情| 亚洲国产精品久久久久秋霞影院| 亚洲综合视频1区| 国产精品久久久久天堂| 韩日视频一区| 欧美成年网站| 久久激情网站| 激情婷婷久久| 亚洲电影av| 亚洲视频免费看| 亚洲视频视频在线| 国产麻豆精品在线观看| 欧美大片免费| 好男人免费精品视频| 国内揄拍国内精品久久| 亚洲精品色婷婷福利天堂| 国产精品二区三区四区| 国产综合久久| 国产免费成人| 国产亚洲福利一区| 久久精品一二三| 欧美成人dvd在线视频| 国产亚洲欧美色| 在线免费一区三区| 国产精品试看| 免费欧美日韩国产三级电影| 夜夜夜久久久| 国产精品久久久久久av福利软件| 国产精品性做久久久久久| 亚洲国产女人aaa毛片在线| 欧美理论在线播放| 在线精品亚洲一区二区| 久久国产精品一区二区三区| 久久国产精品久久国产精品| 久久精品夜色噜噜亚洲aⅴ| 久久精品二区亚洲w码| 欧美精品一区二区高清在线观看| 久久蜜桃香蕉精品一区二区三区| 国色天香一区二区| 一区二区三区久久网| 欧美亚洲在线播放| 亚洲日本欧美在线| 激情综合激情| 欧美视频一区在线观看| 欧美成人一区二区三区片免费| 亚洲成色777777女色窝| 久久久久一区| 欧美在线高清视频| 亚洲看片一区| 免费看黄裸体一级大秀欧美| 一本到12不卡视频在线dvd| 99精品福利视频| 国产日本欧美一区二区三区| 久久精品国产免费观看| 国产美女精品视频| 久久高清福利视频| 亚洲视频你懂的| 国产精品日韩精品| 欧美激情第8页| 国产精品一区免费观看| 亚洲网站啪啪| 欧美亚洲三级| 亚洲综合清纯丝袜自拍| 亚洲欧洲免费视频| 国产精品久久久久免费a∨大胸| 欧美性大战久久久久久久蜜臀| 亚洲激情欧美| 国产精品影院在线观看| 另类成人小视频在线| 久久天天躁夜夜躁狠狠躁2022| 1769国产精品| 国产欧美日韩在线观看| 亚洲人成人99网站| 欧美日韩一区在线观看视频| 亚洲欧美日韩精品久久久| 欧美午夜精品久久久久久久| 欧美午夜精品久久久久久孕妇| 在线亚洲欧美视频| 国产在线视频欧美一区二区三区| 91久久精品日日躁夜夜躁国产| 日韩午夜精品| 午夜精品久久久久久| 亚洲乱码国产乱码精品精98午夜| 欧美极品在线播放| 欧美日韩亚洲一区二区三区| 亚洲毛片在线免费观看| 巨胸喷奶水www久久久免费动漫| 牛夜精品久久久久久久99黑人| 亚洲免费观看高清完整版在线观看熊| 日韩一级不卡| 午夜性色一区二区三区免费视频| 欧美视频第二页| 亚洲精品国产欧美| 亚洲综合二区| 国产日韩欧美综合精品| **欧美日韩vr在线| 国产欧美日韩视频| 羞羞漫画18久久大片| 国产一区二区日韩精品| 国产婷婷色一区二区三区在线| 欧美日韩视频在线观看一区二区三区| 亚洲视频成人| 欧美精品国产精品| 一本一本久久a久久精品牛牛影视| 欧美精品三级日韩久久| 欧美一级大片在线观看| 亚洲精品乱码久久久久久黑人| 欧美大片专区| 久热国产精品视频| 亚洲人成在线播放网站岛国| 国产一区二区三区网站| 在线国产欧美| 久久夜色精品一区| 日韩网站在线| 国产日产欧产精品推荐色| 国产模特精品视频久久久久| 久久久91精品国产| 国产精品视频xxx| 亚洲欧洲一区二区三区久久| 欧美视频一区二区| 国产精品精品视频| 亚洲视频免费看| 蜜桃av噜噜一区二区三区| 亚洲精品国产精品国自产在线| 中文在线一区| 一区二区三区免费在线观看| 欧美日韩和欧美的一区二区| 久久露脸国产精品| 一区二区三区四区精品| 欧美日韩一区二区三区在线视频| 国产精品高潮在线| 99精品欧美一区二区三区综合在线| 亚洲欧美卡通另类91av| 久久精品理论片| 亚洲美女免费视频| 欧美在线免费观看视频| 欧美精品一区二区三区高清aⅴ| 欧美日韩1区2区| 久久精品日韩欧美| 国产日韩欧美精品在线| 国产一区视频观看| 欧美激情 亚洲a∨综合| 欧美日韩专区| 精品不卡在线| 1769国内精品视频在线播放| 亚洲视频在线一区观看| 亚洲午夜av电影| 欧美网站在线观看| 国产精品成人在线观看| 亚洲午夜影视影院在线观看| 亚洲福利专区| 亚洲综合国产精品| 亚洲看片网站| 欧美成黄导航| 最新日韩在线| 一区二区三区久久精品| 国产精品视频网站| 欧美福利网址| 亚洲国产成人高清精品| 国产在线观看一区| 国产精品盗摄久久久| 国产亚洲女人久久久久毛片| 欧美伊人久久久久久午夜久久久久| 亚洲毛片一区二区| 99国产精品视频免费观看一公开| 国产美女精品视频| 欧美午夜片欧美片在线观看| 国产在线精品一区二区夜色| 国产伦精品一区二区三区视频孕妇| 亚洲在线观看| 在线看片第一页欧美| 久久精品麻豆| 亚洲电影在线播放| 欧美黄色一级视频| 国产精品久久久久久久久久免费| 亚洲精品免费电影| 欧美日韩国产欧美日美国产精品| 你懂的一区二区| 久热爱精品视频线路一| 久久久一二三| 久久久www| 欧美成人亚洲成人日韩成人| 快播亚洲色图| 久久女同互慰一区二区三区| 小黄鸭精品密入口导航| 国内精品久久久久久久影视蜜臀| 在线观看av一区| 亚洲乱码一区二区| 香蕉久久夜色精品国产| 国产精品yjizz| 国产视频一区在线观看一区免费| 欧美连裤袜在线视频| 亚洲欧洲精品一区二区精品久久久| 99精品免费视频| 在线观看亚洲a| 一区二区三区欧美激情| 欧美性感一类影片在线播放| 欧美中文字幕视频在线观看| 免费av成人在线| 一区二区av| 亚洲国产欧美一区二区三区久久| 国产欧美一区二区在线观看| 国产精品高潮粉嫩av| 欧美日韩免费高清一区色橹橹| 亚洲欧美日韩国产综合在线| 久久久久久久国产| 国产精品一香蕉国产线看观看| 最新国产乱人伦偷精品免费网站| 国产欧美一区二区三区久久| 欧美福利小视频| 亚洲欧美国产另类| 亚洲福利视频三区| 欧美无乱码久久久免费午夜一区| 国产一区二区欧美| 国产精品国产三级国产aⅴ入口| 国产精品久久97| 黑人操亚洲美女惩罚| 日韩视频免费看| 免费在线观看成人av| 欧美 日韩 国产精品免费观看| 韩日成人av| 欧美一区二区三区免费观看视频| 午夜伦欧美伦电影理论片| 久久久一本精品99久久精品66| 国产精品护士白丝一区av| 欧美精品首页| 91久久在线| 亚洲欧洲精品一区二区三区波多野1战4| 欧美a级片一区| 午夜精品av| 伊人久久综合| 亚洲高清不卡一区| 国产欧美亚洲一区|