基于XQuery實(shí)現(xiàn)XML高效查詢的分析研究(全文)_第1頁(yè)
基于XQuery實(shí)現(xiàn)XML高效查詢的分析研究(全文)_第2頁(yè)
基于XQuery實(shí)現(xiàn)XML高效查詢的分析研究(全文)_第3頁(yè)
基于XQuery實(shí)現(xiàn)XML高效查詢的分析研究(全文)_第4頁(yè)
基于XQuery實(shí)現(xiàn)XML高效查詢的分析研究(全文)_第5頁(yè)
已閱讀5頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、基于XQuery實(shí)現(xiàn)XML高效查詢的分析研究XX:TP393XX:XX:1009-3044(20XX)34-9640-04nlysisndReserchofXQueryonXMLqueryCIKe-xun(ZhenJingPriceBureu,ZhenJing2120XX,Chin)bstrct:newXMLquerylnguge,XQueryisnlyzedinthispper,nditspplictionsinreltionlfieldsrelsointroducedndcompred.DevelopmentofXQueryisprospectedintheend.Keywords:XQu

2、ery;XML;XMLquerylnguge隨著電子商務(wù)的蓬勃興起和WEB應(yīng)用的日益廣泛,為克服HTML固有的表達(dá)局限性,同樣源自于SGML(StndrdGenerlizedMrkupLnguge)標(biāo)準(zhǔn)通用標(biāo)記語(yǔ)言的一個(gè)精簡(jiǎn)子集XML應(yīng)運(yùn)而生。自萬維XX聯(lián)合組織W3C(WorldWideWebConsortium)于1998年完成XML標(biāo)準(zhǔn)制訂以來,XML迅速成為第二代WEB應(yīng)用的基礎(chǔ),獲得了業(yè)界所有大型公司(如IBM及微軟等)的全面支持。XML同意信息提供者根據(jù)需要自行定義標(biāo)記及屬性名,其良好的數(shù)據(jù)存儲(chǔ)格式及可擴(kuò)展性使之迅速得到了廣泛的應(yīng)用。當(dāng)愈來愈多的數(shù)據(jù)資料以XML為標(biāo)準(zhǔn)格式進(jìn)行存儲(chǔ)時(shí),

3、由于其格式的不同而導(dǎo)致傳統(tǒng)的數(shù)據(jù)庫(kù)及查詢語(yǔ)法無法適用,如何以高效快捷的方式實(shí)現(xiàn)文件資料的轉(zhuǎn)換與提取,成為XML進(jìn)展的又一個(gè)重要方面。從2000年1月起W3C開始著手?jǐn)M訂一種XML數(shù)據(jù)庫(kù)查詢語(yǔ)言XQuery,該語(yǔ)言可實(shí)現(xiàn)條件查詢、排序、連結(jié)、篩選、分類匯總等數(shù)據(jù)操作,具有條件表達(dá)式、分支語(yǔ)句、循環(huán)語(yǔ)句及排序子句等,還提供了一系列可用于求和、求平均數(shù)等運(yùn)算的內(nèi)置函數(shù),這種語(yǔ)言利用了XPth的路徑表達(dá)式實(shí)現(xiàn)對(duì)XML中的節(jié)點(diǎn)定位,無疑,這一標(biāo)準(zhǔn)一旦形成W3C正式建議,則將會(huì)對(duì)XML的進(jìn)一步進(jìn)展帶來深遠(yuǎn)的影響。本文將就此查詢語(yǔ)言作一分析探討。XML及其相關(guān)標(biāo)準(zhǔn)的概述XML包含有三個(gè)要素:文檔類型定義DT

4、D(DocumentTypeDefinition)或XML大綱(XMLSchem)、可擴(kuò)展樣式語(yǔ)言XSL(eXtensibleStylesheetLnguge)和可擴(kuò)展鏈接語(yǔ)言XLL(eXtensibleLinkLnguge)。其中DTD及XMLSchem定義了XML文件中的元素、元素的屬性及元素與元素屬性之間的關(guān)系并規(guī)定了XML文件的邏輯結(jié)構(gòu);XSL使數(shù)據(jù)與其表現(xiàn)形式相互獨(dú)立;XLL描述了資源之間如何鏈接,可以從不同的方向進(jìn)行遍歷,并可將鏈接存儲(chǔ)在獨(dú)立于引用文檔的數(shù)據(jù)庫(kù)中。W3C為XML制定了三個(gè)技術(shù)規(guī)范:XSLT(XSLTrnsformtions)、DOM(DocumentObjectMo

5、del)和XPth(XMLPthLnguge),其中XSLT的作用是將某種結(jié)構(gòu)的XML文件轉(zhuǎn)換為另一種結(jié)構(gòu)的XML文檔(含HTML文檔);DOM則提供了一種功能強(qiáng)大的編程接口,使應(yīng)用程序能夠訪問和更新XML文檔的樣式、結(jié)構(gòu)及內(nèi)容,這由支持DOM的解釋器來實(shí)現(xiàn),將可得到一個(gè)包含XML文檔中所有元素的樹狀結(jié)構(gòu);XPth定義了一些可對(duì)XML文檔中的數(shù)據(jù)進(jìn)行“尋址”的表達(dá)式,其操作對(duì)象是XML樹狀結(jié)構(gòu)中的節(jié)點(diǎn),其中最重要的表達(dá)式稱為“定位路徑”(LoctionPth),在微軟的msxml及IBM的xln這兩個(gè)支持XPth的軟件系統(tǒng)中其運(yùn)算對(duì)象是DOM的文檔(Document)或節(jié)點(diǎn)(Node)。這三者

6、的典型應(yīng)用關(guān)系可簡(jiǎn)述如下:利用XPth檢索存放數(shù)據(jù)的XMLDOM,得到需要查詢的數(shù)據(jù)子集,進(jìn)而利用DOM提供的接口操縱XSLT中的模板,將檢索出來的數(shù)據(jù)按照適當(dāng)?shù)姆绞斤@示在用戶掃瞄器窗口內(nèi),另外,可以利用XPth尋址XML和XSLTDOM中的節(jié)點(diǎn),然后通過DOM提供的編程接口對(duì)XML中的數(shù)據(jù)和XSLT模板中的參數(shù)進(jìn)行動(dòng)態(tài)修改。XQuery查詢語(yǔ)言進(jìn)展?fàn)顩rXML的進(jìn)展趨勢(shì)將成為互聯(lián)XX上的通用數(shù)據(jù)庫(kù),實(shí)現(xiàn)平臺(tái)無關(guān)化,且不依賴于機(jī)器類型,其數(shù)據(jù)結(jié)構(gòu)的開放性使得數(shù)據(jù)的查詢檢索成為一個(gè)極其重要的領(lǐng)域。上述以XPth及DOM等為基礎(chǔ)的應(yīng)用還僅是一種初步的方法,尤其是DOM節(jié)點(diǎn)與XPth節(jié)點(diǎn)之間的一些不一

7、致問題還有待解決。隨著用XML存儲(chǔ)、交換和表述信息的應(yīng)用日益增多,人們對(duì)其研究也越來越深入,如何從XML數(shù)據(jù)源中準(zhǔn)確有效地獵取所需信息,也就變得越來越重要。XQL、XMLQL、QUILT、XMLGL、XPth、QOL、YTL、Lorel等一般具有較強(qiáng)的針對(duì)性,往往只適用于某種或少數(shù)幾種數(shù)據(jù)類型的查詢,為了適應(yīng)XML的進(jìn)展需求,XML通用查詢語(yǔ)言的制定工作顯得關(guān)鍵而重要。W3C于2000年1月公布了第一版XML查詢語(yǔ)言需求草案文件(XMLQueryRequirementsW3CWorkingDrft),對(duì)XML的查詢語(yǔ)言本身及XML查詢數(shù)據(jù)模板、表示法的進(jìn)展方向及使用環(huán)境等進(jìn)行了規(guī)范,其制定原則

8、是構(gòu)建于W3C進(jìn)展中的另一個(gè)標(biāo)準(zhǔn)規(guī)范XMLInfoset之上并支持命名空間(Nmespces)的應(yīng)用。它規(guī)定了查詢的應(yīng)用范圍不應(yīng)只限于單一的XML文檔內(nèi),且應(yīng)可基于文件的內(nèi)容及結(jié)構(gòu)對(duì)查詢條件作出定義,從而實(shí)現(xiàn)在整個(gè)文件或部分內(nèi)容中進(jìn)行檢索的目的,最終要求查詢的結(jié)果可根據(jù)用戶需求自動(dòng)構(gòu)造成新的XML文檔。目前該語(yǔ)言的最新版本是20XX年11月15日公布的Xquery草案。國(guó)際標(biāo)準(zhǔn)組織W3C的XMLQuery工作小組及XSL工作小組最近于20XX年2月14日為XML的全文檢索工作公布了兩份草案文件,分別為XQueryndXPthFull-TextRequirements和XQueryndXPthF

9、ull-TextUseCses。前者明確提出全文檢索需能夠處理XQuery/XPth文檔模型中的示例且無須設(shè)計(jì)成類客戶端的界面語(yǔ)言,若Xquery/XpthFull-Text支持查詢?cè)嘏c屬性名時(shí),應(yīng)能對(duì)元素內(nèi)容、屬性值等進(jìn)行區(qū)分;后者則闡述了全文檢索的實(shí)際應(yīng)用,以范例形式說明了全文檢索的各個(gè)功能。這一切牽涉到以全文標(biāo)記化(tokenized)方法對(duì)XQuery和Xpth語(yǔ)言的擴(kuò)充,基本機(jī)理是將一段文字逐字、逐標(biāo)點(diǎn)地分成若干個(gè)標(biāo)記(token),從而使相關(guān)位置上的單字能夠參與檢索運(yùn)算,這樣不僅能實(shí)現(xiàn)鄰近單字的查找,而且還能對(duì)其它字元及字根的使用進(jìn)行處理。XQuery分析及應(yīng)用比較XQuery描

10、述XQuery由Quilt所衍生而來,同時(shí)又從XPth和XQL中汲取了路徑表示語(yǔ)法以適應(yīng)層次結(jié)構(gòu)文檔的需要,融入了SQL中基于關(guān)鍵字系列子句的思想,為數(shù)據(jù)重建提供了類SQL的SelectFromWhere模式,并吸取了OQL中由幾種不同表達(dá)式全嵌套組成的功能語(yǔ)言概念。XQuery作為一種將查詢表示成表達(dá)式的功能語(yǔ)言,可以完全嵌套,故而沿用了子查詢的功能與用法。XQuery語(yǔ)言的組成單位可稱為查詢模塊(querymodules),模塊之間相互獨(dú)立但多個(gè)模塊可以用分號(hào)隔開同時(shí)使用并被合法解析,以下是XQuery中的表達(dá)式組成體系:主要表達(dá)式(PrimryExpressions):這是XQuery的

11、基本單元,包括有字符、變量、函數(shù)調(diào)用及決定優(yōu)先級(jí)的括弧使用,其中一個(gè)URL字符在定義上等價(jià)于一個(gè)字符串。路徑表達(dá)式(PthExpressions):其語(yǔ)法基于Xpth1.0,這是一種以路徑方式掃瞄XML文件的標(biāo)記法,在路徑表達(dá)式的開始處可指定文件中的一個(gè)特定節(jié)點(diǎn)或一個(gè)包含有其他子節(jié)點(diǎn)的父節(jié)點(diǎn),再按照文件結(jié)構(gòu)配合以XPth的語(yǔ)法以尋找出符合檢索路據(jù)。)/chpter/figurecption=徑的數(shù)如:document(“myxml.xml“SerchThisDt”。首先是找到myxml.xml文件中的根結(jié)點(diǎn),然后查找根節(jié)點(diǎn)內(nèi)的第二個(gè)chpter子結(jié)點(diǎn),最后檢索出此chpter子結(jié)點(diǎn)中包含有cp

12、tion元素且其值為SerchThisDt的figure子結(jié)點(diǎn)。序列表達(dá)式(SequenceExpressions):XQuery支持結(jié)構(gòu)化運(yùn)算及組合序列,序列指零或其他項(xiàng)目的有序集合,其中一個(gè)項(xiàng)目同意是一個(gè)單位值或一個(gè)節(jié)點(diǎn)。例如以下表達(dá)式構(gòu)造了一個(gè)序列10、(1,2)、空序列()及(3,4):(10,(1,2),(),(3,4)序列表達(dá)式中的項(xiàng)目可以進(jìn)行插入及移除操作。算術(shù)表達(dá)式(rithmeticExpressions):包括常見的加、減、乘、除及取模運(yùn)算等。比較表達(dá)式(ComprisonExpressions):Xquery提供了4種比較表達(dá)式如數(shù)值比較、節(jié)點(diǎn)比較等,下例為一個(gè)返回結(jié)果為

13、“假”的表達(dá)式,原因是每個(gè)結(jié)構(gòu)化結(jié)點(diǎn)均具有自己的標(biāo)識(shí):5is5邏輯表達(dá)式(LogiclExpressions):該表達(dá)式的組成形態(tài)為“ND”及“OR”中的兩者之一,其運(yùn)算結(jié)果總為TRUE或FLSE(除非由現(xiàn)錯(cuò)誤例程)。構(gòu)造式(Constructors):Xquery提供該方法的用途在于利用查詢結(jié)果生成一個(gè)XML結(jié)構(gòu)的文件,以便于存儲(chǔ)和調(diào)用。其中它提供了在數(shù)據(jù)模型XQuery1.0ndXPth2.0DtModel中列出除命名空間(nmespce)節(jié)點(diǎn)以外的每一種結(jié)構(gòu),另外,它還具有一種稱為計(jì)算結(jié)構(gòu)(computedconstructor)的特別形式,可以創(chuàng)建出一個(gè)文檔節(jié)點(diǎn)或其中的某個(gè)元素及其屬性

14、。作為構(gòu)造式中的重要類別元素構(gòu)造表達(dá)式(Elementconstructors),通常可實(shí)現(xiàn)查詢時(shí)除對(duì)現(xiàn)有數(shù)據(jù)進(jìn)行檢索外,并可利用查詢結(jié)果產(chǎn)生新的數(shù)據(jù)的功能,這種方法同意使用XML的標(biāo)記法直接將元素包含于查詢之中,也即同意以XML元素本身作為查詢的表達(dá)式。在早期的Xquery草案版本中,它曾作為與上述邏輯表達(dá)式等相并列的一類表達(dá)式出現(xiàn),新的版本將其歸納于Constructors構(gòu)造式之中。FLWOR表達(dá)式(FLWORexpressions):它由FOR、LET、WHERE、ORDERBY及RETURN等子句以特定順序組合而成。早期版本中含有排序表達(dá)式(Sorting)這一類別,是指查詢時(shí)有時(shí)需

15、要操縱輸出數(shù)據(jù)的排列順序,該子句可設(shè)定多個(gè)排序條件,并可附加升冪(scending)或降冪(Descending)兩個(gè)關(guān)鍵字設(shè)定排序的方向。當(dāng)時(shí)FLWOR表達(dá)式只是稱為FLWR表達(dá)式,即不含有ORDERBY子句。該表達(dá)式第一部分中包含了FOR或LET子句,其值由一到多個(gè)變量組成,且變量的組成是其他表達(dá)式如路徑表達(dá)式等。一個(gè)FLWOR表達(dá)式可能包括多個(gè)FOR或LET子句,并將由WHERE子句進(jìn)行條件篩選并可通過ORDERBY子句進(jìn)行排序,最終滿足檢索條件的結(jié)點(diǎn)數(shù)據(jù)才會(huì)包含于RETURN子句中。如下例所示,表示可列出設(shè)備(Equ)中制造商(Fc)為“沈陽(yáng)某機(jī)械廠”并且于20XX年購(gòu)買的設(shè)備名稱(N

16、me):FOR$eINdocument(myxml.xml)/EquWHERE$e/Fc=沈陽(yáng)某機(jī)械廠ND$e/yer=20XXRETURN$e/Nme無序表達(dá)式(UnorderedExpressions):這一表達(dá)式在傳統(tǒng)的數(shù)據(jù)查詢語(yǔ)言中較少出現(xiàn),而在定義XML查詢規(guī)范時(shí)卻有著極其重要的意義,這一表達(dá)式未列入早期版本,草案制定的過程中 TOC o 1-5 h z 討論增加了這一功能。WEB化下的檢索對(duì)實(shí)現(xiàn)效率要求極高,故對(duì)于一些對(duì)排序根本無要求的返回結(jié)果若按照常規(guī)排序后輸出將會(huì)增加服務(wù)器運(yùn)算及響應(yīng)方面的負(fù)擔(dān),以下是一個(gè)無序函數(shù)使用的示例(查詢返回教師及所對(duì)應(yīng)授課的課程代碼):unordere

17、d(for$tindocument(techers.xml)/techernme=Wngh,$lindocument(lessons.xml)/lessonwhere$t/lessonid=$l/lessonidreturn$t/techerid,$l/lessonid)條件表達(dá)式(ConditionlExpressions):其基本語(yǔ)法為“if”“(“Expression1“)”“then”Expression2“else”Expression3,含義為首先推斷Expression1條件式是否滿足,為true則返回Expression2,否則返回Expression3。限定表達(dá)式(Qunti

18、fiedexpressions):在某些查詢需求下,需測(cè)試是否全部或只有部份元素符合某個(gè)條件,Xquery為此專門提供了“some”及“every”表達(dá)式用矸e表示“部份”及“全部”的選擇。下例使用“some”表示取得book中段落只要有包含siling及windsurfing的Nme元素:FOR$bIN/bookWHERESOME$pIN$b/prSTISFIES(contins($p,siling)NDcontins($p,windsurfing)RETURN$b/Nme同樣,下例使用“every”表示取得book中每個(gè)段落均含有siling的Nme元素:FOR$bIN/bookWHERE

19、EVERY$pIN$b/prSTISFIEScontins($p,siling)RETURN$b/Nme用于序列類型的表達(dá)式(ExpressionsonSequenceTypes):它通常作為一種附加的函數(shù)參數(shù)出現(xiàn),用于instnceof、typeswitch、cst、cstble和tret表達(dá)式中。確認(rèn)型表達(dá)式(VlidteExpressions):該表達(dá)式在早期版本中不列為主要類型,以下為用法示例:VlidteExpr:=(|(SchemGloblContext(/SchemContextStep)*)ExprW3C關(guān)于該表達(dá)式的說明中指出目前“”及“”括號(hào)的應(yīng)用在嵌入式表達(dá)式的環(huán)境中還存

20、在著一些問題。應(yīng)用示例制定XQuery標(biāo)準(zhǔn)前W3C提出了針對(duì)XML查詢的相關(guān)需求,其中一項(xiàng)提及XML查詢語(yǔ)言應(yīng)可實(shí)現(xiàn)在多個(gè)文檔中實(shí)現(xiàn)關(guān)聯(lián)性連結(jié)查詢。以下以教師授課為例說明其實(shí)現(xiàn)過程,要求根據(jù)目錄關(guān)聯(lián)表產(chǎn)生課時(shí)安排文檔,將教師與其授課信息以姓名、課程名為序排列輸出。首先建立三份XML文檔:techers.xml(教師信息表)、lessons.xml(課程信息表)、ctlog.xml(課時(shí)安排目錄表)。techers.xml中包含若干個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)依次包含、等子節(jié)點(diǎn)。lessons.xml中包含若干個(gè)節(jié)點(diǎn),每個(gè)節(jié)點(diǎn)依次包含、等子節(jié)點(diǎn)。ctlog.xml中含有上述文檔的關(guān)聯(lián)屬性,由若干個(gè)節(jié)點(diǎn)組成,

21、其中每個(gè)中依次包含、等子節(jié)點(diǎn)。FOR$iINdocument(ctlog.xml)/item,$tINdocument(techers.xml)/techertecherid=$i/techerid,$lINdocument(lessons.xml)/lessonlessonid=$i/lessonidRETURN$t/nme,$l/title,$i/timeSORTBY(nme,title)以上示例顯示了一個(gè)內(nèi)部關(guān)聯(lián)的數(shù)據(jù)表連結(jié)過程,實(shí)際上XQuery中與傳統(tǒng)SQL語(yǔ)言相類似,同樣也提供了外部關(guān)聯(lián)的操作,如左關(guān)聯(lián)、右關(guān)聯(lián)等。XSLT與XQuery的比較XSLT于1999年成為一個(gè)W3C建議標(biāo)

22、準(zhǔn),具有根據(jù)相關(guān)模板中指定的數(shù)據(jù)轉(zhuǎn)換方式對(duì)XML結(jié)構(gòu)的文檔進(jìn)行輸出樣式處理的功能,但是,由于XSLT在表達(dá)式和模式方面運(yùn)用了Xpth,而XPth是XQuery的一個(gè)子集,因此它一直與XQuery標(biāo)準(zhǔn)化進(jìn)程一起被不斷地修訂完善。XSLT與XQuery之間最顯著的差別在于一個(gè)XSLT樣式表(stylesheet)實(shí)際上是一個(gè)XML文檔,通常與Xquery相比其缺陷是不易閱讀且文檔不夠簡(jiǎn)潔。XSLT和XQuery之間更重要的差異是執(zhí)行模型,特別是指操縱流方面。如果不去考慮Xquery中與眾不同的數(shù)據(jù)類型,則它可認(rèn)為是一種相對(duì)一般且含有顯式操縱流的程序語(yǔ)言。相反,一個(gè)XSLT樣式表的執(zhí)行受一個(gè)模板處理器操縱,每個(gè)節(jié)點(diǎn)均與一套模板相匹配對(duì)應(yīng),并在當(dāng)前節(jié)點(diǎn)的子節(jié)點(diǎn)上進(jìn)行模板的遞歸調(diào)用。使用模式匹配方式執(zhí)行應(yīng)用通常是較為高效便捷的,但當(dāng)運(yùn)用其進(jìn)行更為復(fù)雜的編程時(shí),則會(huì)變得很不靈活而且代碼冗長(zhǎng)。目前應(yīng)用狀況盡管Xquery目前尚處于草案階段,但因其有著良好的應(yīng)用前景,故而傳統(tǒng)大型數(shù)據(jù)庫(kù)開發(fā)公司均在加緊制定各自的標(biāo)準(zhǔn)及規(guī)范以期實(shí)現(xiàn)對(duì)Xquery的支持。20XX年3月Orcle發(fā)表了JvXQuery的原型標(biāo)準(zhǔn),其中包含一

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論