国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      一種解析和創(chuàng)建xml數(shù)據(jù)的方法及系統(tǒng)的制作方法

      文檔序號:6584730閱讀:213來源:國知局
      專利名稱:一種解析和創(chuàng)建xml數(shù)據(jù)的方法及系統(tǒng)的制作方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及XML數(shù)據(jù)處理領(lǐng)域,尤其涉及一種解析和創(chuàng)建具有多種版本和子集的 XML文檔中的XML數(shù)據(jù)的方法及系統(tǒng)。
      背景技術(shù)
      XML(可擴展標(biāo)記語言)作為一種跨平臺的標(biāo)準(zhǔn)數(shù)據(jù)交換格式而廣泛應(yīng)用于Web krvice、數(shù)據(jù)交換和語言交換等方面,是當(dāng)前處理結(jié)構(gòu)化文檔信息的有力工具。在基于XML 的一些應(yīng)用(比如,電子文檔處理、互聯(lián)網(wǎng))中,存在“版本”和“子集”的概念。例如,在 對電子文檔的處理中,常常需要在一個應(yīng)用程序中兼容多種版本和子集的文檔格式,比如, Microsoft Word 2003能夠同時處理Word 97,Word 2000禾口 Word 2003等多種版本規(guī)范的 文檔。再例如,網(wǎng)絡(luò)瀏覽器程序能夠同時處理XHTML 1.0 Strict,XHTML 1.0 Transitional 和XHTML 1.0 Frameset等多種子集規(guī)范的網(wǎng)頁。在這樣的XML應(yīng)用中,就XML數(shù)據(jù)的解析和創(chuàng)建來說,要求應(yīng)用程序能夠?qū)⒍喾N有 結(jié)構(gòu)差異的XML數(shù)據(jù)轉(zhuǎn)換為程序?qū)ο竽P?,或者將程序?qū)ο竽P娃D(zhuǎn)換為多種有結(jié)構(gòu)差異的 XML數(shù)據(jù)。目前公知的XML數(shù)據(jù)與程序?qū)ο竽P椭g的轉(zhuǎn)換方法一般有以下兩種第一種轉(zhuǎn) 換方法是將轉(zhuǎn)換邏輯與程序?qū)ο竽P徒Y(jié)合,轉(zhuǎn)換邏輯由人工或機器創(chuàng)建,程序模型一般直 接處理XML數(shù)據(jù),其中,機器創(chuàng)建轉(zhuǎn)換邏輯的方法的現(xiàn)有代表技術(shù)有JAXB和XMLBeans ;第 二種轉(zhuǎn)換方法是將轉(zhuǎn)換邏輯與程序?qū)ο竽P头蛛x,把XML結(jié)構(gòu)定義為一種元數(shù)據(jù),使用非 特定的方法處理XML數(shù)據(jù),并且根據(jù)定義的元數(shù)據(jù)完成XML數(shù)據(jù)與程序?qū)ο竽P偷南嗷マD(zhuǎn) 換,有代表性的現(xiàn)有技術(shù)有Hibernate和Castor?,F(xiàn)有的這些轉(zhuǎn)換方法對于具有多種版本和子集的XML文檔具有很大的局限性。具 體而言,對于人工創(chuàng)建轉(zhuǎn)換邏輯的方法,需要人為地針對文檔格式的不同版本和子集中每 一處XML結(jié)構(gòu)變化分別進(jìn)行處理,難以實現(xiàn)和維護(hù)。對于機器創(chuàng)建轉(zhuǎn)換邏輯的方法,都是針 對一種XML結(jié)構(gòu)定義生成一套程序?qū)ο竽P停瑹o法同時處理多種XML結(jié)構(gòu)定義。而對于第 二種轉(zhuǎn)換方法,需要針對每一種XML結(jié)構(gòu),定義一套XML結(jié)構(gòu)定義元數(shù)據(jù),這樣造成了程序 資源的浪費,而且多種元數(shù)據(jù)之間有大量冗余部分,對具有多種版本和子集的XML文檔進(jìn) 行修改和維護(hù)時需要同步處理多個XML結(jié)構(gòu)定義元數(shù)據(jù)。例如,在申請日為2005年11月四日的第200510127039.0號中國專利“用于對象 模型與xml間轉(zhuǎn)換的可共享雙向方法和系統(tǒng)”中,使用元模型來描述對象模型以及在該模型 中不同對象彼此如何相關(guān)聯(lián),并且利用多個翻譯器來定義每個XML標(biāo)簽名與相關(guān)聯(lián)元模型 的結(jié)構(gòu)特征之間的映射關(guān)系。通過這種方法,可使用數(shù)個不同的解析機制從同一 XML文件 載入同樣的對象模型。但是,每個XML標(biāo)簽與元模型的結(jié)構(gòu)特征之間的映射是基本固定的, 當(dāng)每個XML標(biāo)簽結(jié)構(gòu)或者對象模型結(jié)構(gòu)發(fā)生變化時,需要改變元模型和翻譯器類來實現(xiàn)映 射。比如,對于多種版本的電子文檔,一個XML結(jié)構(gòu)元素很可能包括不同的屬性,根據(jù)這種 方法,需要針對每個文檔版本,改變元模型中的結(jié)構(gòu)特征及其與翻譯器的映射關(guān)系,可能還需要增加翻譯器來實現(xiàn)映射。也就是說,對于不同的XML結(jié)構(gòu),需要重新定義元模型及其相 應(yīng)的翻譯器,其對應(yīng)的XML結(jié)構(gòu)元數(shù)據(jù)也改變。因此,這樣的元數(shù)據(jù)屬于一種靜態(tài)的XML結(jié) 構(gòu)定義元數(shù)據(jù),不能很好地適用于使用具有多種版本和子集的XML文檔的應(yīng)用,具體體現(xiàn) 在,對這樣的XML文檔的修改和維護(hù)比較困難,應(yīng)用程序?qū)崿F(xiàn)邏輯復(fù)雜,并且同一版本和子 集的不同XML文檔之間不能共享同一個XML結(jié)構(gòu)定義元數(shù)據(jù)。

      發(fā)明內(nèi)容
      為了解決以上第二種轉(zhuǎn)換方法中的問題,本發(fā)明提供一種解析和創(chuàng)建具有多種版 本和子集的XML文檔中的XML數(shù)據(jù)的方法及系統(tǒng),以去除XML結(jié)構(gòu)定義的冗余數(shù)據(jù),節(jié)省計 算機資源,簡化應(yīng)用程序?qū)ML文檔的修改和維護(hù),并使得在同一版本和子集的不同XML文 檔之間可共享一份XML結(jié)構(gòu)定義元數(shù)據(jù)。為了實現(xiàn)以上目的,本發(fā)明提供的XML數(shù)據(jù)解析和創(chuàng)建的方法包括以下步驟定 義XML文檔格式的版本范圍和子集范圍、XML結(jié)構(gòu)與程序?qū)ο竽P椭g的映射關(guān)系集合;根 據(jù)所述映射關(guān)系集合和當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識來動態(tài)創(chuàng)建XML結(jié)構(gòu)定 義元數(shù)據(jù);根據(jù)所述XML結(jié)構(gòu)定義元數(shù)據(jù)完成XML數(shù)據(jù)與程序?qū)ο竽P偷南嗷マD(zhuǎn)換。在所述映射關(guān)系集合中,每一條映射關(guān)系定義XML結(jié)構(gòu)中的一個元素、程序?qū)ο?模型中的一個或多個元素與XML文檔格式的版本范圍和子集范圍的對應(yīng)關(guān)系。在所述映射關(guān)系集合中,XML文檔格式的版本范圍和子集范圍是可選項,如果一條 映射關(guān)系未定義版本范圍和子集范圍,則使用所述映射關(guān)系集合中該條映射關(guān)系的父映射 關(guān)系中的XML結(jié)構(gòu)元素的相應(yīng)定義。 所述動態(tài)創(chuàng)建XML結(jié)構(gòu)定義元數(shù)據(jù)的步驟還可包括將創(chuàng)建的XML結(jié)構(gòu)定義元數(shù)據(jù) 加入緩存的步驟。在這種情況下,所述動態(tài)創(chuàng)建XML結(jié)構(gòu)定義元數(shù)據(jù)的步驟包括以下步驟 在XML結(jié)構(gòu)定義元數(shù)據(jù)緩存中查找當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識;如果沒有 在XML結(jié)構(gòu)定義元數(shù)據(jù)緩存中查找到所述標(biāo)識,則從所述映射關(guān)系集合中定義的XML結(jié)構(gòu) 根節(jié)點開始遍歷映射關(guān)系集合,其中,對于遍歷到的每一條映射關(guān)系,執(zhí)行以下步驟判斷 當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識是否在該條映射關(guān)系中的版本范圍和子集范 圍內(nèi);如果當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識位于所述范圍內(nèi),則通過將該條映 射關(guān)系中定義的XML結(jié)構(gòu)元素與程序?qū)ο竽P驮氐膶?yīng)關(guān)系添加到XML結(jié)構(gòu)定義元數(shù)據(jù) 中的方式來創(chuàng)建XML結(jié)構(gòu)定義元數(shù)據(jù);如果當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識不 在所述范圍內(nèi),則繼續(xù)向下遍歷映射關(guān)系集合;遍歷完之后將動態(tài)創(chuàng)建的XML結(jié)構(gòu)定義元 數(shù)據(jù)加入緩存。相應(yīng)地,根據(jù)本發(fā)明提供的用于解析和創(chuàng)建XML數(shù)據(jù)的系統(tǒng)包括標(biāo)識獲取單元, 獲取當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識;XML數(shù)據(jù)處理單元,定義XML文檔格式的 版本范圍和子集范圍、XML結(jié)構(gòu)與程序?qū)ο竽P椭g的映射關(guān)系集合,根據(jù)所述映射關(guān)系集 合和通過標(biāo)識獲取單元獲取的版本標(biāo)識和子集標(biāo)識來動態(tài)創(chuàng)建XML結(jié)構(gòu)定義元數(shù)據(jù),并根 據(jù)所述XML結(jié)構(gòu)定義元數(shù)據(jù)完成XML數(shù)據(jù)與程序?qū)ο竽P偷南嗷マD(zhuǎn)換。所述XML數(shù)據(jù)處理單元包括創(chuàng)建單元,定義所述映射關(guān)系集合,并根據(jù)所述映射 關(guān)系集合和通過標(biāo)識獲取單元獲取的版本標(biāo)識和子集標(biāo)識來動態(tài)創(chuàng)建XML結(jié)構(gòu)定義元數(shù) 據(jù);轉(zhuǎn)換單元,根據(jù)所述XML結(jié)構(gòu)定義元數(shù)據(jù)完成XML數(shù)據(jù)與程序?qū)ο竽P偷南嗷マD(zhuǎn)換。
      所述XML數(shù)據(jù)處理單元還可包括緩存單元,用于緩存通過創(chuàng)建單元創(chuàng)建的XML結(jié) 構(gòu)定義元數(shù)據(jù)。相對于現(xiàn)有技術(shù)中靜態(tài)的XML結(jié)構(gòu)定義元數(shù)據(jù)而言,本發(fā)明使用一個XML結(jié)構(gòu)映 射關(guān)系集合,就可創(chuàng)建出符合多種版本和子集的XML文檔格式的XML結(jié)構(gòu)定義元數(shù)據(jù),沒有 冗余的XML結(jié)構(gòu)定義,節(jié)省了對計算機資源的占用,同時簡化了應(yīng)用程序?qū)ML文檔的修改 和維護(hù);而且,在處理XML數(shù)據(jù)時動態(tài)創(chuàng)建所需XML結(jié)構(gòu)定義元數(shù)據(jù),使得應(yīng)用程序可以用 統(tǒng)一的方法處理XML文檔格式的多種版本和子集,降低了應(yīng)用程序的實現(xiàn)復(fù)雜度。另一方面,通過將動態(tài)創(chuàng)建的XML結(jié)構(gòu)定義元數(shù)據(jù)加入緩存,可使得在具有同種 版本標(biāo)識和子集標(biāo)識組合的XML文檔之間共享一份XML結(jié)構(gòu)定義元數(shù)據(jù),相對于現(xiàn)有技術(shù) 中使用的靜態(tài)的XML結(jié)構(gòu)定義元數(shù)據(jù)而言,XML結(jié)構(gòu)定義元數(shù)據(jù)緩存只占很小的額外計算 機資源消耗。


      圖1為電子文檔中XML結(jié)構(gòu)定義與文檔版本的關(guān)系示例;圖2為電子文檔中XML結(jié)構(gòu)定義與文檔子集的關(guān)系示例;圖3為根據(jù)本發(fā)明實施例的XML結(jié)構(gòu)映射關(guān)系集合的示例;圖4A和圖4B為根據(jù)本發(fā)明實施例的解析和創(chuàng)建XML數(shù)據(jù)的方法的流程圖;圖5A和圖5B為對于一個特定的電子文檔格式版本標(biāo)識和子集標(biāo)識動態(tài)創(chuàng)建XML 結(jié)構(gòu)定義元數(shù)據(jù)的示意圖;圖6是根據(jù)本發(fā)明的用于解析和創(chuàng)建具有多種版本和子集的XML文檔中的XML數(shù) 據(jù)的系統(tǒng)的框圖。
      具體實施例方式本發(fā)明適用于基于具有多種版本和子集的XML文檔的應(yīng)用,其主要技術(shù)方案包 括首先,定義XML文檔格式的版本范圍和子集范圍、XML結(jié)構(gòu)與程序?qū)ο竽P腿咧g的 映射關(guān)系集合;然后,根據(jù)所述映射關(guān)系集合和當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo) 識來動態(tài)創(chuàng)建XML結(jié)構(gòu)定義元數(shù)據(jù);最后,根據(jù)所述XML結(jié)構(gòu)定義元數(shù)據(jù)完成XML數(shù)據(jù)與程 序?qū)ο竽P偷南嗷マD(zhuǎn)換,具體地講,根據(jù)所述XML結(jié)構(gòu)定義元數(shù)據(jù)將多種具有結(jié)構(gòu)差異的 XML數(shù)據(jù)解析為程序?qū)ο竽P秃蛷某绦驅(qū)ο竽P蛣?chuàng)建多種具有結(jié)構(gòu)差異的XML數(shù)據(jù),該步 驟的具體處理方法由應(yīng)用程序所使用的XML處理方法決定,屬于現(xiàn)有技術(shù),因此,在本說明 書中省略其描述。下面將結(jié)合附圖和實施例對本發(fā)明進(jìn)行詳細(xì)說明。在以下實施例中,以電子文檔 作為具有多種版本和子集的XML文檔的應(yīng)用為例來說明根據(jù)本發(fā)明的解析和創(chuàng)建這樣的 XML文檔中的XML數(shù)據(jù)的方法及系統(tǒng)。對于電子文檔中使用XML作為數(shù)據(jù)表示方式的情況,“版本”和“子集”這兩個概 念對XML結(jié)構(gòu)定義的影響體現(xiàn)在不同的文檔格式版本之間,XML的結(jié)構(gòu)定義(包括節(jié)點、 屬性、文本數(shù)據(jù))會有增加、刪除,為了保持向下兼容性,一般不會有沖突的修改;同一文檔 格式版本的不同子集之間,XML的結(jié)構(gòu)定義不會有相互沖突,所有子集中出現(xiàn)的結(jié)構(gòu)都包含 在全集中。圖1和圖2分別示出電子文檔中XML結(jié)構(gòu)定義與文檔版本和文檔子集的關(guān)系示例。如圖1所示,電子文檔格式規(guī)范的不同版本中,XML根節(jié)點101包含了所有不同的 子節(jié)點集合;在102所示的最早的版本1定義中,包含3個子節(jié)點;在103所示的版本2定 義中,除了包含102中所有的3個子節(jié)點之外,增加了 1個子節(jié)點;在104所示的版本3定 義中,刪除了 1個在102和103中都包含的子節(jié)點,包含了 103中其它3個子節(jié)點,并且增 加了 2個子節(jié)點。如圖2所示,在電子文檔格式規(guī)范的不同子集中,XML根節(jié)點201包含了所有不同 的子節(jié)點集合;202所示的是全集定義,包含所有的6個子節(jié)點;在203、204所示的兩個不 同子集中,各包含4各子節(jié)點,但都沒有超出全集202的范圍,并且203、204所包含的子節(jié) 點有重疊,202中有1個子節(jié)點沒有被203和204包含。在本發(fā)明實施例中,所述映射關(guān)系集合的具體定義如下每一條映射關(guān)系定義了 XML結(jié)構(gòu)中的一個元素與程序?qū)ο竽P椭械囊粋€或多個 元素的對應(yīng)關(guān)系;每一條映射關(guān)系還定義了 XML結(jié)構(gòu)中的一個元素與電子文檔格式的版本范圍和 子集范圍的對應(yīng)關(guān)系,該對應(yīng)關(guān)系的含義是,對于任何特定版本和子集的文檔格式定義,如 果該版本和子集包含在該條映射關(guān)系中的版本范圍和子集范圍之內(nèi),則在該特定的文檔格 式定義中,存在該條映射關(guān)系中的XML結(jié)構(gòu)元素;在每一條映射關(guān)系中電子文檔格式的版本范圍和子集范圍是可選項,如果一條映 射關(guān)系未定義版本范圍和子集范圍,則使用所述映射關(guān)系集合中該條映射關(guān)系的父映射關(guān) 系中的XML結(jié)構(gòu)元素的相應(yīng)定義;映射關(guān)系之間的結(jié)構(gòu)性從屬信息反映各XML結(jié)構(gòu)元素之間的結(jié)構(gòu)關(guān)系。以下將參考圖3詳細(xì)描述根據(jù)本發(fā)明實施例的XML結(jié)構(gòu)映射關(guān)系集合。參照圖3,標(biāo)號301-306分別表示6條XML結(jié)構(gòu)映射關(guān)系。以映射關(guān)系301為例, 在該條映射關(guān)系中,XML結(jié)構(gòu)是<Root>節(jié)點,電子文檔版本范圍是版本1-5,電子文檔格式 子集范圍是所有子集,對應(yīng)的程序?qū)ο竽P褪浅绦驅(qū)ο驲。這條映射關(guān)系反映如下關(guān)系 XML節(jié)點<Root>在電子文檔格式規(guī)范的版本1-5的所有子集中有定義;在解析XML數(shù)據(jù)時, <Root>節(jié)點中的數(shù)據(jù)解析為程序?qū)ο驲 ;在創(chuàng)建XML數(shù)據(jù)時,<Root>節(jié)點中的數(shù)據(jù)從程序 對象R中獲取。另外,映射關(guān)系301包含兩個子映射關(guān)系302和303,這表示在XML結(jié)構(gòu)中, <Root>節(jié)點包含兩個子節(jié)點<Parentl>和<Parent2>。此外,在子映射關(guān)系中版本范圍和子集范圍可以省略,在這種情況下,根據(jù)映射關(guān) 系之間的結(jié)構(gòu)性信息找到父映射關(guān)系,使用父映射關(guān)系中的XML結(jié)構(gòu)元素的相應(yīng)定義。例 如,映射關(guān)系304同時省略了版本范圍和子集范圍,映射關(guān)系305省略了子集范圍,則根據(jù) 其父映射關(guān)系302中的數(shù)據(jù)定義可知,304定義的版本范圍是版本1-5,子集范圍是子集A、 B,305定義的版本范圍是版本3-5,子集范圍是A、B。圖4A是根據(jù)本發(fā)明實施例的解析和創(chuàng)建XML數(shù)據(jù)的方法的流程圖。參照圖4A,該 方法包括以下步驟步驟401、獲取當(dāng)前處理的電子文檔的版本標(biāo)識和子集標(biāo)識;步驟404、從根節(jié)點開始遍歷XML結(jié)構(gòu)映射關(guān)系集合,對每一個具體的映射關(guān)系, 判斷當(dāng)前處理的電子文檔的版本標(biāo)識和子集標(biāo)識是否在該條映射關(guān)系中的版本范圍和子集范圍內(nèi),如果當(dāng)前處理的電子文檔的版本標(biāo)識和子集標(biāo)識位于所述范圍內(nèi),則執(zhí)行步驟 405,如果當(dāng)前處理的電子文檔的版本標(biāo)識和子集標(biāo)識不在所述范圍內(nèi),則繼續(xù)向下遍歷映 射關(guān)系集合并重復(fù)以上步驟,直到遍歷完映射關(guān)系集合為止;步驟405、利用XML結(jié)構(gòu)和程序?qū)ο蟮膶?yīng)關(guān)系,動態(tài)創(chuàng)建XML結(jié)構(gòu)定義元數(shù)據(jù),具 體地講,通過將所述映射關(guān)系所定義的XML結(jié)構(gòu)元素與程序?qū)ο竽P驮氐膶?yīng)關(guān)系添加 到XML結(jié)構(gòu)定義元數(shù)據(jù)中的方式來動態(tài)創(chuàng)建XML結(jié)構(gòu)定義元數(shù)據(jù),具體的元數(shù)據(jù)創(chuàng)建方法 和創(chuàng)建的元數(shù)據(jù)格式由底層所使用的XML處理方法決定;步驟407、使用底層所使用的XML處理方法和動態(tài)創(chuàng)建的XML結(jié)構(gòu)定義元數(shù)據(jù)來處 理XML數(shù)據(jù),完成XML數(shù)據(jù)與程序?qū)ο竽P偷南嗷マD(zhuǎn)換。需要指出的是,在以上方法中,每當(dāng)遍歷到當(dāng)前處理的電子文檔格式的版本范圍 和子集范圍在其版本范圍和子集范圍之內(nèi)的映射關(guān)系時,就將該映射關(guān)系中的XML結(jié)構(gòu)元 素和程序?qū)ο竽P驮氐膶?yīng)關(guān)系添加到XML結(jié)構(gòu)定義元數(shù)據(jù)中,從而逐漸完成XML結(jié)構(gòu) 定義元數(shù)據(jù)的創(chuàng)建,也就是說,遍歷XML結(jié)構(gòu)映射關(guān)系集合、選取當(dāng)前處理電子文檔格式所 具有的XML結(jié)構(gòu)元素和程序?qū)ο竽P驮氐膶?yīng)關(guān)系以及創(chuàng)建XML結(jié)構(gòu)定義元數(shù)據(jù)的過程 是同步進(jìn)行的。在其它實施例中,還可以首先在遍歷XML結(jié)構(gòu)映射關(guān)系集合的同時選取出 當(dāng)前處理電子文檔格式所具有的全部XML結(jié)構(gòu)元素和程序?qū)ο竽P驮氐膶?yīng)關(guān)系,然后 根據(jù)這些XML結(jié)構(gòu)元素和程序?qū)ο竽P驮氐膶?yīng)關(guān)系來創(chuàng)建XML結(jié)構(gòu)元素。在以上方法中,還可將動態(tài)創(chuàng)建的XML結(jié)構(gòu)定義元數(shù)據(jù)加入緩存,這樣就能夠?qū)?現(xiàn)在具有同一版本和子集的不同電子文檔之間共享一份XML結(jié)構(gòu)定義元數(shù)據(jù)。以下將參照 圖4B說明使用緩存機制的方法與參照圖4A描述的方法的不同之處。圖4B與圖4A的不同之處在于增加了步驟402、403和406,其余步驟與圖4A相同。在步驟402中,在XML結(jié)構(gòu)定義元數(shù)據(jù)緩存中以在步驟401中獲取的版本標(biāo)識和 子集標(biāo)識為鍵進(jìn)行查詢。接著,在步驟403中,判斷是否找到XML結(jié)構(gòu)定義元數(shù)據(jù),如果在步驟402中在XML 結(jié)構(gòu)定義元數(shù)據(jù)緩存中找到對應(yīng)的值,則執(zhí)行步驟407,如果在XML結(jié)構(gòu)定義元數(shù)據(jù)緩存中 不存在在步驟401中獲取的版本標(biāo)識和子集標(biāo)識,則執(zhí)行步驟404。在步驟405中動態(tài)創(chuàng)建XML結(jié)構(gòu)定義元數(shù)據(jù)之后,在步驟406中,將創(chuàng)建的XML結(jié) 構(gòu)定義元數(shù)據(jù)加入緩存。以下將參照圖5A和圖5B通過一個具體實施例來詳細(xì)說明步驟404(遍歷XML結(jié) 構(gòu)映射關(guān)系集合)和步驟405(動態(tài)創(chuàng)建XML結(jié)構(gòu)定義元數(shù)據(jù))的處理過程。在本實施例中,使用Castor作為XML處理方法,則XML結(jié)構(gòu)定義元數(shù)據(jù)格式本身 也是一個XML文檔,創(chuàng)建時可以使用DOM等方式創(chuàng)建XML文檔,再將XML文檔保存為字符串 形式。另外,XML結(jié)構(gòu)定義元數(shù)據(jù)緩存采取公知的“鍵-值”對存儲技術(shù),能夠?qū)δ骋惶囟?的鍵,存儲、查詢一個唯一的值,其中,版本標(biāo)識和子集標(biāo)識共同組成了鍵,XML結(jié)構(gòu)定義元 數(shù)據(jù)為值,也就是說,XML結(jié)構(gòu)定義元數(shù)據(jù)緩存中保存的鍵是在步驟401中獲取的版本標(biāo)識 和子集標(biāo)識,保存的值是在步驟405中得到的字符串形式的XML文檔。在步驟407中,使用 Castor處理方法和獲取的XML結(jié)構(gòu)定義元數(shù)據(jù)來處理XML數(shù)據(jù),完成XML數(shù)據(jù)和程序?qū)ο?模型之間的轉(zhuǎn)換。在圖5A中,301-306分別表示處理過程所需的XML結(jié)構(gòu)映射關(guān)系集合,501表示在步驟401中獲取的當(dāng)前處理的電子文檔的版本標(biāo)識是4,子集標(biāo)識是A,502對應(yīng)于圖4A和 圖4B中的步驟404和405,503-506表示通過步驟502處理所選取出的電子文檔格式版本 4、子集A中定義的XML文檔結(jié)構(gòu),507是創(chuàng)建的Castor格式的XML結(jié)構(gòu)定義元數(shù)據(jù)。步驟502的具體處理過程是從301開始遍歷XML結(jié)構(gòu)映射關(guān)系集合,在本實施例 中,遵循深度優(yōu)先的遍歷順序,依次遍歷301、302、304、305、303、306,當(dāng)然,也可采用其它順 序?qū)ML結(jié)構(gòu)映射關(guān)系集合進(jìn)行遍歷;對每一個映射關(guān)系,比較其版本范圍、子集范圍定義 和501中的版本標(biāo)識、子集標(biāo)識,例如305定義的版本范圍是版本1-5,子集范圍是子集A、 B,501所示的版本4、子集A位于該范圍內(nèi),所以305中定義的XML結(jié)構(gòu)和程序?qū)ο蟊贿x取 出來成為506 ;而303定義的版本范圍是1-3,501所示的版本4不在此范圍內(nèi),所以303對 應(yīng)的XML結(jié)構(gòu)不被選取;使用選取的503-506,創(chuàng)建507所示的XML文檔,即為所需Castor 格式的XML結(jié)構(gòu)定義元數(shù)據(jù)。注意,如上所述,步驟502中的遍歷XML結(jié)構(gòu)映射關(guān)系集合、選取具有501中的版 本標(biāo)識和子集標(biāo)識的電子文檔格式所具有的XML結(jié)構(gòu)和程序?qū)ο?、?chuàng)建XML結(jié)構(gòu)定義元數(shù) 據(jù)的過程也可以是同步進(jìn)行的,即在處理過程中,選取出來的XML結(jié)構(gòu)元素503-506并不必 要同時出現(xiàn)以創(chuàng)建XML結(jié)構(gòu)定義元數(shù)據(jù)507 ;可以在選取503之后,即創(chuàng)建507的一部分, 在選取504之后,再創(chuàng)建507的對應(yīng)部分,如此依次完成XML結(jié)構(gòu)定義元數(shù)據(jù)的創(chuàng)建。圖5B顯示了對版本標(biāo)識為2、子集標(biāo)識為B的電子文檔動態(tài)創(chuàng)建XML結(jié)構(gòu)定義元 數(shù)據(jù)的過程,其中,502所表示的遍歷、選取和創(chuàng)建過程與參照圖5A描述的過程相同。在圖 5B中,通過步驟502所選取的XML結(jié)構(gòu)和程序?qū)ο蠓謩e表示為512-515,并據(jù)此創(chuàng)建了版本 標(biāo)識為2、子集標(biāo)識為B的電子文檔的XML結(jié)構(gòu)定義元數(shù)據(jù)516。從圖5A和圖5B可看出,本發(fā)明對于一種特定的電子文檔版本標(biāo)識和子集標(biāo)識組 合,只需要動態(tài)創(chuàng)建一份XML結(jié)構(gòu)定義元數(shù)據(jù),然后將其緩存,從而使得該元數(shù)據(jù)可以在具 有該特定版本標(biāo)識和子集標(biāo)識的示同電子文檔之間共享使用。相比于現(xiàn)有技術(shù)中使用的靜 態(tài)XML結(jié)構(gòu)定義元數(shù)據(jù),緩存只占用很小的額外計算機資源消耗。需要指出的是,本實施例以電子文檔作為具有多種版本和子集的XML文檔的應(yīng) 用,但是本發(fā)明可適用于滿足以下條件的其它應(yīng)用(1)應(yīng)用于XML數(shù)據(jù)與程序?qū)ο竽P椭?間的相互轉(zhuǎn)換;⑵存在版本、子集或類似的概念,在不同的版本和子集之間,XML結(jié)構(gòu)定義 有修改。另外,所述XML結(jié)構(gòu)映射關(guān)系集合不限于圖3所示的映射關(guān)系集合,只要能表明XML 文檔格式的版本范圍和子集范圍、XML結(jié)構(gòu)與程序?qū)ο竽P椭g的映射關(guān)系的集合都應(yīng)包 括在本發(fā)明的保護(hù)范圍之內(nèi)。相應(yīng)地,本發(fā)明提供一種用于解析和創(chuàng)建具有多種版本和子集的XML文檔中的 XML數(shù)據(jù)的系統(tǒng),在該系統(tǒng)中,已知包括用于顯示使用具有多種版本和子集的XML文檔的應(yīng) 用的顯示單元。以下將參照圖6描述該系統(tǒng)所特有的部分。從圖6可看出,該系統(tǒng)還包括標(biāo)識獲取單元100,獲取當(dāng)前處理的XML文檔的版 本標(biāo)識和子集標(biāo)識;XML數(shù)據(jù)處理單元200,定義XML文檔格式的版本范圍和子集范圍、XML 結(jié)構(gòu)與程序?qū)ο竽P椭g的映射關(guān)系集合,根據(jù)所述映射關(guān)系集合和通過標(biāo)識獲取單元 100獲取的版本標(biāo)識和子集標(biāo)識來動態(tài)創(chuàng)建XML結(jié)構(gòu)定義元數(shù)據(jù),并根據(jù)所述XML結(jié)構(gòu)定義 元數(shù)據(jù)完成XML數(shù)據(jù)與程序?qū)ο竽P偷南嗷マD(zhuǎn)換。所述XML數(shù)據(jù)處理單元200包括創(chuàng)建單元202,定義所述映射關(guān)系集合,并根據(jù)
      10所述映射關(guān)系集合和通過標(biāo)識獲取單元100獲取的版本標(biāo)識和子集標(biāo)識來動態(tài)創(chuàng)建XML結(jié) 構(gòu)定義元數(shù)據(jù);轉(zhuǎn)換單元206,根據(jù)所述XML結(jié)構(gòu)定義元數(shù)據(jù)完成XML數(shù)據(jù)與程序?qū)ο竽P?的相互轉(zhuǎn)換,并將轉(zhuǎn)換的結(jié)果傳送給顯示單元。這些單元的操作與以上參照圖4A所描述的 方法步驟相同,因此,省略其描述。為了實現(xiàn)同一版本和子集的不同XML文檔之間XML結(jié)構(gòu)定義元數(shù)據(jù)的共享,所述 XML數(shù)據(jù)處理單元200還可包括緩存單元204,用于緩存通過創(chuàng)建單元創(chuàng)建的XML結(jié)構(gòu)定義 元數(shù)據(jù)。此時的XML數(shù)據(jù)處理單元200的操作與以上參照圖4B所描述的方法步驟相同,因 此,省略其描述。從以上描述可看出,本發(fā)明使用一個XML結(jié)構(gòu)映射關(guān)系集合,就可創(chuàng)建出符合多 種版本和子集的XML文檔格式的XML結(jié)構(gòu)定義元數(shù)據(jù),沒有冗余的XML結(jié)構(gòu)定義,能夠節(jié)省 對計算機資源的占用和簡化應(yīng)用程序的修改和維護(hù)。另一方面,與XML文檔格式的版本和 子集相關(guān)的定義只定義在XML結(jié)構(gòu)映射關(guān)系集合中,應(yīng)用程序以單一的方法就可以處理多 種版本和子集的XML文檔,降低了應(yīng)用程序的實現(xiàn)復(fù)雜度。此外,上述實施例中還使用了 緩存機制,從而使得在同一版本和子集的不同文檔之間可共享使用一份XML結(jié)構(gòu)定義元數(shù) 據(jù)。以上參考實施例描述了本發(fā)明。但是,本領(lǐng)域的技術(shù)人員應(yīng)該理解,本發(fā)明不限于 所公開的實施例,在不脫離本發(fā)明的基本原理的情況下,任何類似的修改、替換或變形都應(yīng) 包括在本發(fā)明的保護(hù)范圍內(nèi),本發(fā)明的保護(hù)范圍由權(quán)利要求限定。
      權(quán)利要求
      1.一種解析和創(chuàng)建XML數(shù)據(jù)的方法,包括步驟1、定義XML文檔格式的版本范圍和子集范圍、XML結(jié)構(gòu)與程序?qū)ο竽P椭g的映 射關(guān)系集合;步驟2、根據(jù)所述映射關(guān)系集合和當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識來動態(tài) 創(chuàng)建XML結(jié)構(gòu)定義元數(shù)據(jù);步驟3、根據(jù)所述XML結(jié)構(gòu)定義元數(shù)據(jù)完成XML數(shù)據(jù)與程序?qū)ο竽P偷南嗷マD(zhuǎn)換。
      2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述映射關(guān)系集合中,每一條映射關(guān)系 定義XML結(jié)構(gòu)中的一個元素、程序?qū)ο竽P椭械囊粋€或多個元素與XML文檔格式的版本范 圍和子集范圍的對應(yīng)關(guān)系。
      3.根據(jù)權(quán)利要求2所述的方法,其特征在于,在所述映射關(guān)系集合中,XML文檔格式的 版本范圍和子集范圍是可選項,如果一條映射關(guān)系未定義版本范圍和子集范圍,則使用所 述映射關(guān)系集合中該條映射關(guān)系的父映射關(guān)系中的XML結(jié)構(gòu)元素的相應(yīng)定義。
      4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟2包括從所述映射關(guān)系集合中定義的XML結(jié)構(gòu)根節(jié)點開始遍歷映射關(guān)系集合,其中,對于遍 歷到的每一條映射關(guān)系,執(zhí)行以下步驟判斷當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識是否在該條映射關(guān)系中的版本范圍 和子集范圍內(nèi);如果當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識位于所述范圍內(nèi),則通過將該條映射 關(guān)系中定義的XML結(jié)構(gòu)元素與程序?qū)ο竽P驮氐膶?yīng)關(guān)系添加到XML結(jié)構(gòu)定義元數(shù)據(jù)中 的方式來創(chuàng)建XML結(jié)構(gòu)定義元數(shù)據(jù);如果當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識不在所述范圍內(nèi),則繼續(xù)向下遍歷映 射關(guān)系集合。
      5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟2還包括將創(chuàng)建的XML結(jié)構(gòu)定義 元數(shù)據(jù)加入緩存的步驟。
      6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述步驟2包括在XML結(jié)構(gòu)定義元數(shù)據(jù)緩存中查找當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識;如果沒有在XML結(jié)構(gòu)定義元數(shù)據(jù)緩存中查找到所述標(biāo)識,則從所述映射關(guān)系集合中定 義的XML結(jié)構(gòu)根節(jié)點開始遍歷映射關(guān)系集合,其中,對于遍歷到的每一條映射關(guān)系,執(zhí)行以 下步驟判斷當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識是否在該條映射關(guān)系中的版本范圍 和子集范圍內(nèi);如果當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識位于所述范圍內(nèi),則通過將該條映射 關(guān)系中定義的XML結(jié)構(gòu)元素與程序?qū)ο竽P驮氐膶?yīng)關(guān)系添加到XML結(jié)構(gòu)定義元數(shù)據(jù)中 的方式來創(chuàng)建XML結(jié)構(gòu)定義元數(shù)據(jù);如果當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識不在所述范圍內(nèi),則繼續(xù)向下遍歷映 射關(guān)系集合;遍歷完之后將動態(tài)創(chuàng)建的XML結(jié)構(gòu)定義元數(shù)據(jù)加入緩存。
      7.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述XML結(jié)構(gòu)定義元數(shù)據(jù)緩存采取 “鍵-值”對存儲技術(shù),其中,版本標(biāo)識和子集標(biāo)識共同組成鍵,XML結(jié)構(gòu)定義元數(shù)據(jù)是值。
      8.一種用于解析和創(chuàng)建XML數(shù)據(jù)的系統(tǒng),包括用于顯示使用具有多種版本和子集的 XML文檔的應(yīng)用的顯示單元,其特征在于,該系統(tǒng)還包括標(biāo)識獲取單元,獲取當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識; XML數(shù)據(jù)處理單元,定義XML文檔格式的版本范圍和子集范圍、XML結(jié)構(gòu)與程序?qū)ο竽?型之間的映射關(guān)系集合,根據(jù)所述映射關(guān)系集合和通過標(biāo)識獲取單元獲取的版本標(biāo)識和子 集標(biāo)識來動態(tài)創(chuàng)建XML結(jié)構(gòu)定義元數(shù)據(jù),并根據(jù)所述XML結(jié)構(gòu)定義元數(shù)據(jù)完成XML數(shù)據(jù)與 程序?qū)ο竽P偷南嗷マD(zhuǎn)換。
      9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述XML數(shù)據(jù)處理單元包括創(chuàng)建單元,定義所述映射關(guān)系集合,并根據(jù)所述映射關(guān)系集合和通過標(biāo)識獲取單元獲 取的版本標(biāo)識和子集標(biāo)識來動態(tài)創(chuàng)建XML結(jié)構(gòu)定義元數(shù)據(jù);轉(zhuǎn)換單元,根據(jù)所述XML結(jié)構(gòu)定義元數(shù)據(jù)完成XML數(shù)據(jù)與程序?qū)ο竽P偷南嗷マD(zhuǎn)換,并 將轉(zhuǎn)換的結(jié)果傳送給顯示單元。
      10.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述創(chuàng)建單元執(zhí)行以下操作從所述映射關(guān)系集合中定義的XML結(jié)構(gòu)根節(jié)點開始遍歷映射關(guān)系集合,其中,對于遍 歷到的每一條映射關(guān)系,執(zhí)行以下步驟判斷當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識是否在該條映射關(guān)系中的版本范圍 和子集范圍內(nèi);如果當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識位于所述范圍內(nèi),則通過將該條映射 關(guān)系中定義的XML結(jié)構(gòu)元素與程序?qū)ο竽P驮氐膶?yīng)關(guān)系添加到XML結(jié)構(gòu)定義元數(shù)據(jù)中 的方式來創(chuàng)建XML結(jié)構(gòu)定義元數(shù)據(jù);如果當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識不在所述范圍內(nèi),則繼續(xù)向下遍歷映 射關(guān)系集合。
      11.根據(jù)權(quán)利要求9所述的系統(tǒng),其特征在于,所述XML數(shù)據(jù)處理單元還包括緩存單元, 用于緩存通過創(chuàng)建單元創(chuàng)建的XML結(jié)構(gòu)定義元數(shù)據(jù)。
      12.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,所述創(chuàng)建單元執(zhí)行以下操作 在緩存單元中查找當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識;如果沒有在緩存單元中查找到所述標(biāo)識,則從所述映射關(guān)系集合中定義的XML結(jié)構(gòu)根 節(jié)點開始遍歷映射關(guān)系集合,其中,對于遍歷到的每一條映射關(guān)系,執(zhí)行以下步驟判斷當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識是否在該條映射關(guān)系中的版本范圍 和子集范圍內(nèi);如果當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識位于所述范圍內(nèi),則通過將該條映射 關(guān)系中定義的XML結(jié)構(gòu)元素與程序?qū)ο竽P驮氐膶?yīng)關(guān)系添加到XML結(jié)構(gòu)定義元數(shù)據(jù)中 的方式來創(chuàng)建XML結(jié)構(gòu)定義元數(shù)據(jù);如果當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識不在所述范圍內(nèi),則繼續(xù)向下遍歷映 射關(guān)系集合;遍歷完之后將動態(tài)創(chuàng)建的XML結(jié)構(gòu)定義元數(shù)據(jù)加入緩存單元。
      13.根據(jù)權(quán)利要求11所述的系統(tǒng),其特征在于,所述緩存單元采取“鍵一值”對存儲技 術(shù),其中,版本標(biāo)識和子集標(biāo)識共同組成鍵,XML結(jié)構(gòu)定義元數(shù)據(jù)是值。
      14.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,在所述映射關(guān)系集合中,每一條映射關(guān)系定義XML結(jié)構(gòu)中的一個元素、程序?qū)ο竽P椭械囊粋€或多個元素與XML文檔格式的版本 范圍和子集范圍的對應(yīng)關(guān)系。
      15.根據(jù)權(quán)利要求14所述的系統(tǒng),其特征在于,在所述映射關(guān)系集合中,XML文檔格式 的版本范圍和子集范圍是可選項,如果一條映射關(guān)系未定義版本范圍和子集范圍,則使用 所述映射關(guān)系集合中該條映射關(guān)系的父映射關(guān)系中的XML結(jié)構(gòu)元素的相應(yīng)定義。
      全文摘要
      本發(fā)明提供一種解析和創(chuàng)建具有多種版本和子集的XML文檔中的XML數(shù)據(jù)的方法和系統(tǒng)。該方法包括定義XML文檔格式的版本范圍和子集范圍、XML結(jié)構(gòu)與程序?qū)ο竽P椭g的映射關(guān)系集合;根據(jù)映射關(guān)系集合和當(dāng)前處理的XML文檔的版本標(biāo)識和子集標(biāo)識來動態(tài)創(chuàng)建XML結(jié)構(gòu)定義元數(shù)據(jù);根據(jù)XML結(jié)構(gòu)定義元數(shù)據(jù)完成XML數(shù)據(jù)與程序?qū)ο竽P偷南嗷マD(zhuǎn)換。相應(yīng)地,提供解析和創(chuàng)建XML數(shù)據(jù)的系統(tǒng)。本發(fā)明使用一個映射關(guān)系集合,創(chuàng)建出符合多種版本和子集的XML結(jié)構(gòu)定義元數(shù)據(jù),從而去除了XML結(jié)構(gòu)定義的冗余數(shù)據(jù),節(jié)省了計算機資源,簡化了應(yīng)用程序的修改和維護(hù),并且同一版本和子集的不同XML文檔之間可共享一份XML結(jié)構(gòu)定義元數(shù)據(jù)。
      文檔編號G06F17/30GK102073662SQ20091023824
      公開日2011年5月25日 申請日期2009年11月23日 優(yōu)先權(quán)日2009年11月23日
      發(fā)明者張磊, 王曉磊, 王毅 申請人:北京北大方正技術(shù)研究院有限公司, 北大方正集團有限公司
      網(wǎng)友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1