两个人的电影免费视频_国产精品久久久久久久久成人_97视频在线观看播放_久久这里只有精品777_亚洲熟女少妇二三区_4438x8成人网亚洲av_内谢国产内射夫妻免费视频_人妻精品久久久久中国字幕

一種基于先序位置-子孫數(shù)的xml編碼方法

文檔序號:6440957閱讀:150來源:國知局
專利名稱:一種基于先序位置-子孫數(shù)的xml編碼方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種在XML數(shù)據(jù)庫技術(shù)領(lǐng)域中簡單易實現(xiàn)的XML編碼方法,其核心技術(shù)是通過一種基于先序遍歷值與節(jié)點子孫數(shù)相結(jié)合的二元編碼方案實現(xiàn)了 XML文檔的關(guān)系存儲。該編碼方法是一種基于區(qū)間值的編碼方法,在基于關(guān)系數(shù)據(jù)庫的XML文檔存儲、基于XML的信息查詢、更新操作及信息交換中有廣泛的應(yīng)用,特別是在軍事信息系統(tǒng)中實現(xiàn)信息互操作領(lǐng)域具有重要軍事應(yīng)用價值。
背景技術(shù)
近年來,XML已逐漸成為分布計算與業(yè)務(wù)應(yīng)用中數(shù)據(jù)表示及數(shù)據(jù)交換的標(biāo)準(zhǔn)格式。為發(fā)揮XML的潛能,XML文檔數(shù)據(jù)的有效存儲是必須研究解決的關(guān)鍵技術(shù)。由于XML數(shù)據(jù)的半結(jié)構(gòu)化性、XML的文檔/數(shù)據(jù)兩重性和多用途性、以及XML在不同應(yīng)用領(lǐng)域的特殊要求,使得XML的存儲問題至今難以找到一種通用的“最佳”解決方案。這正是導(dǎo)致以XML存儲為核心的“XML數(shù)據(jù)庫”至今尚無定論的關(guān)鍵所在。目前的解決方法可歸結(jié)為兩大類:第一種是在已有的關(guān)系數(shù)據(jù)庫或面向?qū)ο髷?shù)據(jù)庫基礎(chǔ)上擴充相應(yīng)的功能,使其能夠勝任XML的數(shù)據(jù)處理工作,稱之為XML使能數(shù)據(jù)庫。另一種方法則是為XML數(shù)據(jù)量身定做的數(shù)據(jù)庫即純XML數(shù)據(jù)庫。純XML數(shù)據(jù)庫充分考慮到XML數(shù)據(jù)的特點,以一種自然的方式來處理XML數(shù)據(jù),能夠從各方面很好地支持XML的存儲和查詢,并且能夠達到較好的效果,但是,純XML數(shù)據(jù)庫要走向成熟還有很長的路。由于關(guān)系數(shù)據(jù)庫技術(shù)已相當(dāng)成熟,如何利用關(guān)系數(shù)據(jù)庫實現(xiàn)XML文檔的高效存儲,對于充分發(fā)揮現(xiàn)有關(guān)系數(shù)據(jù)庫的效能,實現(xiàn)基于關(guān)系數(shù)據(jù)庫的信息系統(tǒng)之間的互聯(lián)互通及互操作,其核心問題是基于關(guān)系數(shù)據(jù)庫的XML編碼方法。 因此,本發(fā)明對XML文檔的高效利用既有很強的理論意義和應(yīng)用價值。

發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是針對現(xiàn)有技術(shù)的不足,提供一種簡單易實現(xiàn)的XML編碼方法,該方法實現(xiàn)了對XML文檔的先序位置-子孫數(shù)的區(qū)間編碼方案,以及對XML文檔編碼的關(guān)系數(shù)據(jù)庫存儲,在此基礎(chǔ)上實現(xiàn)了 XML文檔的查詢和更新操作,為XML文檔的關(guān)系數(shù)據(jù)庫操作提供了一種簡便有效的方法。為解決XML文檔的關(guān)系數(shù)據(jù)庫高效操作問題,本發(fā)明提供了一種先序位置和其節(jié)點子孫數(shù)為編碼的二元XML編碼方法,該方法通過先序遍歷文檔結(jié)構(gòu)圖組成的二叉樹,獲得每個節(jié)點的先序遍歷值,實現(xiàn)每個XML文檔節(jié)點的有序編碼,然后通過計算每個節(jié)點的子孫數(shù),通過節(jié)點的子孫數(shù)實現(xiàn)了文檔結(jié)構(gòu)的表征,從而實現(xiàn)了 XML文檔編碼。具體說,就是設(shè)XML文檔樹是T,節(jié)點集合V = {VI, V2,…,Vn},則基于先序遍歷值和子孫數(shù)的二元區(qū)間編碼為〈numorder, sum〉,其中:numorder是節(jié)點的先序遍歷編號,sum是以本節(jié)點為根節(jié)點的子樹的所有節(jié)點數(shù),即該節(jié)點的子孫數(shù)(含自身節(jié)點)。本發(fā)明的基于先序位置-子孫數(shù)的XML編碼方法包括以下步驟:(I)對XML文檔進行二元區(qū)間編碼:
①采用先序遍歷算法對XML進行遍歷,獲得對應(yīng)的先序遍歷值numorder ;②計算每個節(jié)點對應(yīng)的子孫數(shù)sum (含自身節(jié)點),葉子節(jié)點的子孫數(shù)(sum)為I ;③將對應(yīng)的numorder和sum組成一個二元組,形成XML文檔編碼;(2)設(shè)計XML的關(guān)系存儲模式XML文檔的關(guān)系存儲模式就是采用關(guān)系數(shù)據(jù)庫實現(xiàn)XML文檔信息的存儲,查詢及更新操作。其核心是設(shè)計合適的關(guān)系模式,將文檔解析后得到的有關(guān)信息存儲到關(guān)系數(shù)據(jù)庫中。①對資源文檔集合建立一個索引表,該索引表的每個記錄是一個三元組(docID,URL, ResourceType)。其中:docID是該節(jié)點所在文檔的文檔標(biāo)識;URL是文檔資源的地址;ResourceType 是資源的類型。②對于每個標(biāo)記相同的節(jié)點建立一個元素索引表,該索引表的每個記錄是一個六兀組(docID, numorder, sum, parentorder,, nodeType, depth, name)。其中:docID是該節(jié)點所在文檔的文檔標(biāo)識;numorder是該節(jié)點在文檔樹中的先序遍歷值; sum是節(jié)點的子孫數(shù);parentorder是其父節(jié)點的編號;nodeType是節(jié)點的類型,其值取EE、ET和EN,分別代表元素節(jié)點的內(nèi)容是子元素、文本和空。depth表示該節(jié)點在文檔樹中所位于的層次。由于一般樹結(jié)構(gòu)中節(jié)點的孩子是無順序的,而XML文檔樹中的節(jié)點應(yīng)是有序的,故我們可把文檔樹結(jié)構(gòu)定義為一種擴展的樹結(jié)構(gòu),節(jié)點的孩子順序按照從左到右順序排列,因而NodeNum號實質(zhì)上確定了該節(jié)點在文檔樹中的位置③對XML文檔樹中的所有標(biāo)記名建立一個索引表,該索引表的每個記錄是一個四兀組(docID, numorder, Tagname, ConType)。其中:docID是該節(jié)點所在文檔的文檔標(biāo)識;numorder是該節(jié)點的編號;Tagname是所有元素節(jié)點和屬性節(jié)點的標(biāo)記;ConType是該節(jié)點的內(nèi)容類型。④對于所有文本節(jié)點和屬性節(jié)點,需要建立一個值索引表,該表的每個記錄是一個四兀組(docID, numorder, value, valueType)。其中:docID是該節(jié)點所在文檔的文檔標(biāo)識;numorder是該節(jié)點的編號;value是以字符串形式存放的文本或?qū)傩怨?jié)點的值;
valueType用來說明屬性值或文本內(nèi)容的原始數(shù)據(jù)類型。據(jù)此,可設(shè)計XML文檔的關(guān)系存儲模式如下:Documen t(docID, URL, ResourceType)Tagname(docID, numorder, Tagname, ConType)Value (docID, numorder, value, valueType)Elem-Tagname (docID, numorder, sum, parentorder, nodeType, depth, name)(3)基于關(guān)系存儲的XML信息查詢XPath是一個XML查詢語言,它用來描述在一個XML文檔樹中的查詢導(dǎo)航,它是W3C所推薦的一種相對簡單的查詢語言。同時,XPath也是強制的,各種XML查詢語言都必須支持它。針對查詢功能,XPath定義了 13個查詢軸,在XML文檔中實現(xiàn)相關(guān)信息的查詢。這13個查詢軸分別是:child軸:選擇上下文節(jié)點的孩子。descendant軸:選擇上下文節(jié)點的后裔。parent軸:選擇上下文節(jié)點的父節(jié)點。ancestor軸:選擇上下文節(jié)點的祖先。

following-si bling軸:選擇上下文節(jié)點所有在其后(右)的節(jié)點。preceding-sibling軸:選擇上下文節(jié)點所有在其前(左)的節(jié)點。following軸:選擇上下文節(jié)點所有在其后且排除其所有后裔的節(jié)點。preceding軸:選擇上下文節(jié)點所有在其前且排除其所有祖先的節(jié)點。attribute軸:選擇上下文節(jié)點的屬性。namespace軸:選擇上下文節(jié)點的命名空間。self軸:選擇上下文節(jié)點自身。descendant-or-self軸:選擇上下文節(jié)點自身及其后裔。ancestor-or-self軸:選擇上下文節(jié)點自身及其祖先。本發(fā)明的編碼方案可以全面支持XPath查詢,也即支持XPath的13個查詢軸。(4)關(guān)系存儲下的XML信息刪除當(dāng)文檔樹中需要刪除節(jié)點為V,其雙親節(jié)點為u時,可分為以下幾種情況:①刪除的節(jié)點V是一個葉子節(jié)點,也即Sum(V) = I。在這種情況下,可通過以下步驟實現(xiàn):a.節(jié)點V的雙親節(jié)點u的后裔數(shù)減I,即sum(u) = sum(U)-1 ;b.文檔樹中所有比節(jié)點V編號大的節(jié)點p,其編號減I,即numorder (p)=numorder(P)-1 ;c.節(jié)點u的所有祖先節(jié)點的后裔數(shù)(sum)全部減I。節(jié)點u的所有祖先x滿足numorder (x) < numorder (u)且 numorder (x) +sum(x) ^ numorder (u),也就是當(dāng)節(jié)點 x 滿足 numorder (X) < numorder (U)且 numorder (u) ^ numorder (x) +sum (x)時,sum (x)=Sum(X)-10②刪除的節(jié)點V不是葉子節(jié)點,也即sum(v) Φ I。在這種情況下,可通過以下步驟實現(xiàn):
a.節(jié)點 u 的后裔數(shù)減 I,即 sum(u) = sum(U)-1 ;b.節(jié)點V的所有后裔節(jié)點的層數(shù)-1。節(jié)點V的所有后裔X滿足numorder (v) +sum(v) ^ numorder (x)且 numorder (v) < numorder (x),也就是當(dāng)節(jié)點 x 滿足 numorder (V)+sum (V) ^ numorder (x)且 numorder (v) < numorder (x)時,depth (x)=depth (X)-1o c.文檔樹中所有比節(jié)點V編號大的節(jié)點p,其編號減I,即numorder (p)=numorder(p) -1。d.節(jié)點V的孩子節(jié)點為X,其雙親節(jié)點修改為numorder (U),即如果節(jié)點x滿足:numorder (v) = parentorder (x),則 parentorder (x) = numorder (u)。(5)信息更新的SQL語言實現(xiàn)基于(3)和⑷中所給方法,可以通過數(shù)據(jù)庫的SQL語言方便地實現(xiàn)XML信息查詢、更新操作。本發(fā)明的優(yōu)點是:本發(fā)明借助先序遍歷算法的思想,通過和節(jié)點子孫數(shù)一起形成了一種XML的編碼方法,具有編碼合理,節(jié)點物理意義清晰,操作簡便,易于實現(xiàn)等優(yōu)點,對XML的關(guān)系存儲實現(xiàn)有重要的實用價值。


下面結(jié)合附圖對本發(fā)明作進一步詳細說明。圖1為一個XML文檔構(gòu)成的文檔樹。圖2為本發(fā)明 的編碼與現(xiàn)有常用XML編碼的對比。圖3為本發(fā)明對XPath的查詢軸的支持方法。
具體實施例方式為了更好的說明本發(fā)明的技術(shù)方案,以下結(jié)合附圖對本發(fā)明的實施方式作進一步說明。參見圖1,某XML文檔片段所構(gòu)成的文檔樹如圖所示。首先按照先序遍歷方法,可得到節(jié)點的排列先序排列順序為:1,2,3,4,5,6,7,8。然后計算每個節(jié)點的子孫數(shù)分別為:8,3,1,1,1,3,1,1。其形成的二元編碼為:(1,8),(2,3), (3,1), (4,1), (5,1), (6,3), (7,I), (8,I)。參見圖2,依據(jù)圖1所給出的文檔樹,可以得到本發(fā)明所形成的編碼樹,圖2中給出了其他幾種常用方法的編碼樹。參加圖3,本發(fā)明對XML的標(biāo)準(zhǔn)查詢語言XPath的支持非常簡單,只有要通過簡單的加減運算即可實現(xiàn)。如查詢節(jié)點u的孩子V,則可通過判斷:numorder(u)=parentorder (V)即可。本發(fā)明對數(shù)據(jù)庫標(biāo)準(zhǔn)查詢語言SQL的支持如下(以關(guān)系存儲下的XML信息刪除的第一種情況為例說明SQL的實現(xiàn)程序)://獲得節(jié)點V的編號及雙親節(jié)點編號select numorder, parentorderinto:vorder,:vparentorder
權(quán)利要求
1.一種基于先序位置-子孫數(shù)的XML編碼方法,其特征在于包括如下具體步驟:(I)采用先序遍歷計算出XML文檔樹中各節(jié)點的編歷值,再計算出閣節(jié)點的子孫數(shù)(含自身節(jié)點),形成XML文檔的二元編碼;(2)基于先序位置-子孫數(shù)的編碼方法設(shè)計XML文檔的一組關(guān)系存儲模式;(3)基于先序位置-子孫數(shù)的XML編碼方法對XML的標(biāo)準(zhǔn)查詢語言XPath的支持方法;(4)基于先序位置-子孫數(shù)編碼方法的關(guān)系存儲模式對信息更新的支持方法;(5)基于先序位置-子孫數(shù)編碼方法的關(guān)系存儲模式對SQL查詢語言的支持方法。
全文摘要
本發(fā)明涉及一種在XML數(shù)據(jù)庫技術(shù)領(lǐng)域中簡單易實現(xiàn)的XML編碼方法,其核心技術(shù)是通過一種基于先序遍歷值與節(jié)點子孫數(shù)相結(jié)合的二元編碼方案實現(xiàn)了XML文檔的關(guān)系存儲。首先采用先序遍歷算法,求出每個XML文檔節(jié)點的先序遍歷值,而后計算每個節(jié)點的子孫數(shù)目(含自身節(jié)點),以二元組(先序遍歷值,子孫數(shù))構(gòu)成XML的文檔編碼。在此基礎(chǔ)上,設(shè)計基于關(guān)系數(shù)據(jù)庫的數(shù)據(jù)存儲模式,從而實現(xiàn)了XML文檔的關(guān)系存儲。本發(fā)明可以基于簡單的加減運算即可實現(xiàn)對XML的標(biāo)準(zhǔn)查詢語言XPath的支持,也可方便地支持關(guān)系存儲下的XML信息更新操作,支持SQL數(shù)據(jù)庫查詢語言。本發(fā)明的編碼方法具有編碼合理,節(jié)點物理意義清晰,操作簡便,易于實現(xiàn)等優(yōu)點,對XML的關(guān)系存儲實現(xiàn)有重要的實用價值。
文檔編號G06F17/30GK103164421SQ20111041334
公開日2013年6月19日 申請日期2011年12月12日 優(yōu)先權(quán)日2011年12月12日
發(fā)明者曹耀欽, 宋建社, 孫睿, 曹繼平, 趙霜, 郭軍, 袁春霞, 李曉燕 申請人:中國人民解放軍第二炮兵工程學(xué)院
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
泸溪县| 岢岚县| 叶城县| 宿松县| 招远市| 景洪市| 柏乡县| 许昌市| 临高县| 吴旗县| 武邑县| 金山区| 江阴市| 阜南县| 太仆寺旗| 建平县| 全南县| 栾川县| 横峰县| 卢氏县| 宿州市| 拜城县| 新兴县| 青海省| 东港市| 龙岩市| 凤庆县| 渑池县| 宁城县| 景宁| 五莲县| 连城县| 新安县| 洛宁县| 甘洛县| 灵川县| 永嘉县| 松江区| 莆田市| 山东省| 吕梁市|