2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩40頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  摘 要</b></p><p>  隨著Internet的發(fā)展和人們對數(shù)據(jù)標(biāo)準(zhǔn)性、平臺(tái)無關(guān)性的要求越來越高,XML(Extensible Markup Language)得到了廣泛的應(yīng)用,同時(shí)人們對于XML的存儲(chǔ)方式提出了更高的要求。</p><p>  本課題意在設(shè)計(jì)一種將XML數(shù)據(jù)存入關(guān)系數(shù)據(jù)庫中的方法,并按照該方法開發(fā)一個(gè)XML數(shù)據(jù)

2、裝入關(guān)系數(shù)據(jù)庫的軟件。</p><p>  本文首先對XML的基本知識(shí)進(jìn)行介紹,隨后討論用關(guān)系數(shù)據(jù)庫存儲(chǔ)XML數(shù)據(jù)的原因,并對目前已經(jīng)提出的一些XML文檔在關(guān)系數(shù)據(jù)庫中的存儲(chǔ)方式進(jìn)行研究討論,在此基礎(chǔ)上提出一個(gè)無模式的XML文檔對于關(guān)系數(shù)據(jù)庫的存儲(chǔ)方法。這個(gè)方法將XML數(shù)據(jù)分為文檔、元素、屬性、文本四種節(jié)點(diǎn),并將這四種節(jié)點(diǎn)映射為數(shù)據(jù)庫中四個(gè)關(guān)系表。另外將DOM樹中的元素節(jié)點(diǎn)關(guān)系映射為一個(gè)數(shù)據(jù)庫關(guān)系表,這五個(gè)表是本

3、課題中數(shù)據(jù)庫設(shè)計(jì)的核心。五個(gè)表中包含的屬性信息要求方便于DOM接口和SAX接口兩種方式訪問。</p><p>  提出存儲(chǔ)方法后,我們將利用這種存儲(chǔ)方法開發(fā)一個(gè)關(guān)系數(shù)據(jù)庫中XML數(shù)據(jù)裝入系統(tǒng)。文章后半部分將詳細(xì)說明該軟件的需求分析、設(shè)計(jì)、具體開發(fā)細(xì)節(jié)以及測試。該軟件的測試結(jié)果驗(yàn)證了這種存儲(chǔ)方法能夠有效的將無模式的XML文檔存入關(guān)系數(shù)據(jù)庫。</p><p>  關(guān)鍵詞:關(guān)系數(shù)據(jù)庫、XML&l

4、t;/p><p><b>  Abstract</b></p><p>  With the development of Internet and the people’s higher and higher requirement for data’s standardization and its independent of platform,XML(extens

5、ible markup language) is widely used,in the mean time the higher requirement for the storage of XML data is asked.</p><p>  This research group designed a method to store XML data into RDB(Relational Data Ba

6、se) of which the technology have been very mature and widely used.Then we developed an application that can store the XML data into RDB using this method.</p><p>  At first this article will introduce basica

7、l knowledge of XML,and then discuss why store XML data using RDB.After that we’ll research and discuss the some methods for storing XML data into RDB that have been put forward.Based on them we’ll design a storage method

8、 from non-schema XML data to RDB.We classified XML data as four kind of nodes such as Document,Element,Atribute and Text.These four nodes are mapped to four tables in the RDB and we mapped the DOM Tree into a table too.T

9、he five tables is</p><p>  After giving the method we designed we’ll develop an application that can storing the XML data into RDB using that method.It’s requirement analyse,design details and test result we

10、ll be described in the second half part of the article.The test result will show that using the storage method we can storing the non-schema XML data into the RDB effectively.</p><p>  Key words:RDB(Relation

11、al Data Base),XML</p><p><b>  目 錄</b></p><p><b>  摘 要1</b></p><p>  Abstract2</p><p><b>  目 錄3</b></p><p><

12、b>  1 緒 論5</b></p><p>  1.1 課題背景及研究意義5</p><p>  1.2 XML知識(shí)簡介5</p><p>  1.2.1 XML5</p><p>  1.2.2 DTD和Schema7</p><p>  1.2.3 DOM7</p>

13、<p>  1.2.4 SAX9</p><p>  1.3基于關(guān)系數(shù)據(jù)庫的XML存儲(chǔ)技術(shù)10</p><p>  1.3.1現(xiàn)存的基于關(guān)系數(shù)據(jù)庫的XML存儲(chǔ)技術(shù)10</p><p>  1.3.2一個(gè)模式驅(qū)動(dòng)映射實(shí)例10</p><p>  1.4 作者的工作11</p><p>  1

14、.5 本章小結(jié)11</p><p>  2 無模式映射的設(shè)計(jì)12</p><p>  2.1方案設(shè)計(jì)要求12</p><p>  2.2設(shè)計(jì)思想12</p><p>  2.3方案詳細(xì)設(shè)計(jì)12</p><p>  2.3.1E-R圖(實(shí)體集中只畫主碼)13</p><p>  2.

15、3.2 實(shí)體集和聯(lián)系13</p><p>  2.3.3 設(shè)計(jì)方法與策略14</p><p>  2.3.4 數(shù)據(jù)庫基本表設(shè)計(jì)16</p><p>  2.3.5數(shù)據(jù)庫優(yōu)化16</p><p>  2.3.6數(shù)據(jù)字典16</p><p>  2.4本章總結(jié)18</p><p>  

16、3 關(guān)系數(shù)據(jù)庫中XML裝入系統(tǒng)19</p><p>  3.1 任務(wù)概述19</p><p>  3.2 設(shè)計(jì)思想概述19</p><p>  3.3 需求規(guī)定20</p><p>  3.3.1 系統(tǒng)用例圖20</p><p>  3.3.2 用例事件流20</p><p>  3

17、.3.3 開發(fā)環(huán)境需求20</p><p>  3.4 系統(tǒng)設(shè)計(jì)21</p><p>  3.4.1 系統(tǒng)體系結(jié)構(gòu)21</p><p>  3.4.2 序列圖設(shè)計(jì)21</p><p>  3.4.3 類設(shè)計(jì)23</p><p>  3.4.4 類關(guān)系圖29</p><p>  3.4

18、.5 算法的實(shí)現(xiàn)策略30</p><p>  3.4.6 異常處理31</p><p>  3.5 系統(tǒng)測試32</p><p>  3.5.1 系統(tǒng)功能測試32</p><p>  3.5.2 測試總結(jié)37</p><p>  3.5.3 與模式映射XML-RDB裝入系統(tǒng)的分析對比37</p>

19、<p>  3.6 本章小節(jié)38</p><p><b>  結(jié) 論39</b></p><p><b>  致 謝40</b></p><p><b>  參考文獻(xiàn)41</b></p><p><b>  1 緒 論</b><

20、;/p><p>  1.1 課題背景及研究意義</p><p>  XML(eXtensible Markup Language)是W3C于1998年提出的數(shù)據(jù)文件格式標(biāo)準(zhǔn),它是SGML(Standard Generalize MarkupLanguage)的受限子集,但更簡練易用。自被提出以來就由于其標(biāo)準(zhǔn)性、可擴(kuò)展性和半結(jié)構(gòu)化等特征得到了各方面的關(guān)注和使用。隨著Internet的高速發(fā)展和

21、人們對數(shù)據(jù)標(biāo)準(zhǔn)性、平臺(tái)無關(guān)性的要求的提高,其應(yīng)用也更加廣泛。</p><p>  目前XML文檔的存儲(chǔ)方式主要有三種:</p><p>  1.作為普通文件存儲(chǔ)于文件系統(tǒng)中</p><p>  2.存儲(chǔ)于專門為XML設(shè)計(jì)的XMLDB中</p><p>  3.存儲(chǔ)于關(guān)系數(shù)據(jù)庫中</p><p>  第一種方法由于文件系

22、統(tǒng)在組織、管理、檢索等各種數(shù)據(jù)服務(wù)功能上的固有不足而基本不被使用。后兩種方法各有優(yōu)缺點(diǎn),但由于目前關(guān)系數(shù)據(jù)庫管理系統(tǒng)在各種應(yīng)用中仍占主體地位,因此如何更加合理地將XML文檔進(jìn)行轉(zhuǎn)換并存儲(chǔ)到關(guān)系數(shù)據(jù)庫中具有很大的研究價(jià)值。</p><p>  本課題主要研究如何有效的將XML數(shù)據(jù)存儲(chǔ)到關(guān)系數(shù)據(jù)庫中,并設(shè)計(jì)一種可以盡量避免或簡化上述問題的存儲(chǔ)方法,用此方法開發(fā)一個(gè)關(guān)系數(shù)據(jù)庫中XML數(shù)據(jù)裝入系統(tǒng)以驗(yàn)證該方法的正確性和可

23、行性。</p><p>  1.2 XML知識(shí)簡介</p><p>  這一節(jié)主要介紹XML的基本知識(shí),包括XML概念、文檔類型定義(DTD)、XML模式(Schema)、文檔對象模型(DOM)、SAX(Simple API for XML)接口等等。</p><p><b>  1.2.1 XML</b></p><p&

24、gt;  XML即為可擴(kuò)展的標(biāo)記語言(eXtensible Markup Language)。XML是一套定義語義標(biāo)記的規(guī)則,這些標(biāo)記將文檔分成許多部件并對這些部件加以標(biāo)識(shí)。</p><p>  XML是標(biāo)記語言。理解XML,首先要理解標(biāo)記。先說說HTML的標(biāo)記(Markup),通俗地講,它就是一種用來給文本添加標(biāo)記的語言。在HTML里每個(gè)標(biāo)志都是有確切含義的。例如,在HTML 中,標(biāo)簽〈B〉的含義是要求HTML

25、瀏覽器將一段文本加粗表示,而標(biāo)簽〈CENTER〉的含義是告訴瀏覽器將這段文本在一行的中間顯示。而XML并非象HTML那樣,提供了一組事先已經(jīng)定義好了的標(biāo)簽,而是提供了一個(gè)標(biāo)準(zhǔn),利用這個(gè)標(biāo)準(zhǔn),你可以根據(jù)實(shí)際需要定義自己的新的置標(biāo)語言,并為你的這個(gè)置標(biāo)語言規(guī)定它特有的一套標(biāo)簽。準(zhǔn)確的說,XML是一種源置標(biāo)語言,它允許你根據(jù)它所提供的規(guī)則,制定各種各樣的置標(biāo)語言。</p><p>  XML有兩個(gè)先驅(qū)——SGML和HT

26、ML,這兩個(gè)語言都是非常成功的標(biāo)記語言,SGML的全稱是標(biāo)準(zhǔn)通用化標(biāo)記語言,它從80年代初開始使用。正如XML一樣,SGML也可用于創(chuàng)建成千上萬的標(biāo)記語言,它為語法置標(biāo)提供了異常強(qiáng)大的工具,同時(shí)具有極好的擴(kuò)展性,因此在分類和索引數(shù)據(jù)中非常有用。目前,SGML多用于科技文獻(xiàn)和政府辦公文件中。SGML 非常之復(fù)雜,其復(fù)雜程度對于網(wǎng)絡(luò)上的日常應(yīng)用簡直不可思議。不僅如此,SGML非常昂貴。HTML免費(fèi)、簡單,而且它獲得了廣泛的支持。它是一個(gè)非常

27、簡單的SGML語言,可以方便普通人的使用。1996年人們開始致力于描述一個(gè)置標(biāo)語言,它既具有SGML的強(qiáng)大功能和可擴(kuò)展性,同時(shí)又具有HTML的簡單性。W3C于1998年2月批準(zhǔn)了XML的1.0版本,一個(gè)嶄新而大有前途的語言誕生了。 </p><p>  XML具有以下優(yōu)點(diǎn):</p><p>  1.XML具有自說明性。XML能夠應(yīng)用于各種領(lǐng)域的原因,就是XML具有到目前為止其他方法所不具備

28、的數(shù)據(jù)描述特點(diǎn),控制信息不是采用應(yīng)用軟件的獨(dú)有形式,而是采用誰都可以看得懂的標(biāo)記形式來表現(xiàn),所以XML最適合作為數(shù)據(jù)交換的標(biāo)準(zhǔn),這也是 XML受人關(guān)注的原因。允許各種不同的專業(yè)(如音樂、化學(xué)、數(shù)學(xué)等)開發(fā)與自己的特定領(lǐng)域有關(guān)的標(biāo)記語言。這就使得該領(lǐng)域中的人們可以交換筆記、數(shù)據(jù)和信息,而不用擔(dān)心接收端的人是否有特定的軟件來創(chuàng)建數(shù)據(jù)。</p><p>  2.XML具有通用性。由于XML是非專有的并易于閱讀和編寫,就

29、使得它成為在不同的應(yīng)用間交換數(shù)據(jù)的理想格式.XML使用的是非專有的格式,不受版權(quán)、專利、商業(yè)秘密或是其他種類的知識(shí)產(chǎn)權(quán)的限制。XML的功能是非常強(qiáng)大的,同時(shí)對于人類或是計(jì)算機(jī)程序來說,都容易閱讀和編寫。因而成為交換語言的首選。</p><p>  此外,相對于HTML,XML具有先天的優(yōu)越性。為了自己的瀏覽器增加一些特殊的顯示效果,HTML加入了一些特殊的標(biāo)記。日益增多的標(biāo)簽不但使HTML越來越龐大,瀏覽器的開發(fā)

30、越來越復(fù)雜,還降低了不同瀏覽器之間的兼容性。盡管HTML的標(biāo)簽越來越多,其顯示力卻還遠(yuǎn)遠(yuǎn)不夠。如果你希望非常精確地表現(xiàn)一些你自己的數(shù)據(jù),可能你需要一些現(xiàn)在在HTML中尚不存在的標(biāo)簽?,F(xiàn)在HTML內(nèi)部結(jié)構(gòu)的條理性越來越差。你寫的HTML文件,甚至是那些專門的所見即所得工具自動(dòng)生成的HTML文件,可能在語法上會(huì)錯(cuò)誤百出,不過沒關(guān)系,瀏覽器照樣能讀它。 現(xiàn)在有了XML,你終于可以自由地制定你自己的置標(biāo)語言,而不必再念念不忘微軟、 Netsca

31、pe、W3C的首肯了。實(shí)際上,現(xiàn)在許多行業(yè)、機(jī)構(gòu)都利用XML定義了自己的置標(biāo)語言。</p><p>  1.2.2 DTD和Schema</p><p>  DTD是一種保證XML文檔格式正確的有效方法,可以比較XML文檔和DTD文件來看文檔是否符合規(guī)范,元素和標(biāo)簽使用是否正確。一個(gè)DTD文檔包含:元素的定義規(guī)則,元素間關(guān)系的定義規(guī)則,元素可使用的屬性,可使用的實(shí)體或符號(hào)規(guī)則。DTD文件也

32、是一個(gè)ASCII的文本文件,后綴名為.dtd。例如:myfile.dtd。</p><p>  由于DTD存在不少缺陷,比方說:DTD是基于正則表達(dá)式的,描述能力有限;DTD沒有數(shù)據(jù)類型的支持,在大多數(shù)應(yīng)用環(huán)境下能力不足;DTD的約束定義能力不足,無法對XML實(shí)例文檔作出更細(xì)致的語義限制;DTD的結(jié)構(gòu)不夠結(jié)構(gòu)化,重用的代價(jià)相對較高;DTD并非使用XML作為描述手段,而DTD的構(gòu)建和訪問并沒有標(biāo)準(zhǔn)的編程接口,無法使

33、用標(biāo)準(zhǔn)的編程方式進(jìn)行DTD維護(hù)。因此針對這些缺點(diǎn),設(shè)計(jì)了XML Schma。</p><p>  XML Schema如同DTD一樣是負(fù)責(zé)定義和描述XML文檔的結(jié)構(gòu)和內(nèi)容模式。它可以定義XML文檔中存在哪些元素和元素之間的關(guān)系,并且可以定義元素和屬性的數(shù)據(jù)類型。XML Schema基于XML,沒有專門的語法;XML可以象其他XML文件一樣解析和處理;XML Schema支持一系列的數(shù)據(jù)類型(int、float、B

34、oolean、date等);XML Schema提供可擴(kuò)充的數(shù)據(jù)模型;XML Schema支持綜合命名空間;XML Schema支持屬性組。</p><p><b>  1.2.3 DOM</b></p><p>  DOM Document 是以層次結(jié)構(gòu)組織起來的節(jié)點(diǎn),或信息片段,的集合。這種層次結(jié)構(gòu)允許開發(fā)者瀏覽樹來查找特定信息。通常,分析結(jié)構(gòu)需要在完成任何工作之

35、前裝入整個(gè)文檔并且裝入層次結(jié)構(gòu)。</p><p>  由于 DOM 是基于信息的層次結(jié)構(gòu),因此它被稱為是基于樹的。</p><p>  另一方面,DOM 還提供了一個(gè) API,該 API 允許開發(fā)者為創(chuàng)建應(yīng)用程序而在樹的任何地方添加、編輯、移動(dòng)或除去節(jié)點(diǎn)。</p><p>  DOM 基本的節(jié)點(diǎn)類型</p><p>  XML 中最常見的節(jié)點(diǎn)

36、類型:</p><p>  Node: DOM 基本的數(shù)據(jù)類型。 </p><p>  Element: 元素</p><p>  Attr: 一個(gè)元素的屬性。 </p><p><b>  Text: 文本 </b></p><p>  Document: 代表整個(gè) XML 文檔。一個(gè) Docu

37、ment 對象通常也被稱為一棵 DOM 樹(根)。 </p><p>  較不常見的節(jié)點(diǎn)類型:CData、注釋、處理指令和文檔片段:</p><p>  CData:“字符數(shù)據(jù)”的縮寫 </p><p>  注釋:注釋包含有關(guān)數(shù)據(jù)的信息,通常應(yīng)用程序會(huì)忽略它們。 </p><p>  處理指令:PI 是專門針對應(yīng)用程序的信息。 </p&

38、gt;<p>  文檔片段:為了形成良好的格式,文檔只能有一個(gè)根元素。有時(shí),必須臨時(shí)創(chuàng)建幾組元素,這些元素不是滿足需求所必要的。 </p><p><b>  下面文檔片段:</b></p><p><b>  <goods></b></p><p>  <item instock=&quo

39、t;Y" itemid="SA15"></p><p>  <name>Silver Show Saddle, 16 inch</name></p><p>  <price>825.00</price></p><p>  <qty>1</qty></

40、p><p><b>  </item></b></p><p>  <item instock="N" itemid="C49"></p><p>  <name>Premium Cinch </name></p><p>  <p

41、rice>49.00</price></p><p>  <qty>1</qty></item></p><p><b>  </goods></b></p><p>  對應(yīng)DOM樹(元素節(jié)點(diǎn))如圖:</p><p>  文檔片段的DOM樹示例圖<

42、/p><p><b>  1.2.4 SAX</b></p><p>  讀取和操縱 XML 文件的標(biāo)準(zhǔn)方法是 DOM(“文檔對象模型”)。遺憾的是,這種方法需要讀取整個(gè)文件并將它存儲(chǔ)到樹結(jié)構(gòu)中,因而效率不高、緩慢,并且會(huì)過度使用資源。對于極其大的文檔,裝入整個(gè)文檔并對該文檔進(jìn)行解析會(huì)很慢且占用大量資源,所以要用其它方式來處理數(shù)據(jù)。一些基于事件的模型,如 Simple A

43、PI for XML(SAX),是工作在數(shù)據(jù)流之上,在數(shù)據(jù)流經(jīng)過時(shí)對其進(jìn)行處理。。</p><p>  SAX 允許正在讀取文檔時(shí)處理該文檔,這避免了在采取操作之前需要等待存儲(chǔ)文檔的所有內(nèi)容,但它不允許開發(fā)者實(shí)際更改原始文檔中的數(shù)據(jù)</p><p>  SAX 是由 XML-DEV 郵件列表的成員開發(fā)的,Java 版本由 David Megginson 維護(hù)。他們的目的是提供一種更自然的方

44、法來使用 XML,這種方法不會(huì)涉及到使用 DOM 的那種開銷。</p><p>  結(jié)果是基于事件的 API。解析器將事件(譬如,元素的開始或結(jié)束)發(fā)送給處理信息的事件處理程序。然后,應(yīng)用程序自己可以處理數(shù)據(jù)。雖然原始文檔保持不變,但 SAX 提供了操縱數(shù)據(jù)的方法,然后會(huì)將該方法導(dǎo)向另一個(gè)過程或文檔。</p><p>  對于 SAX,沒有官方的標(biāo)準(zhǔn);萬維網(wǎng)(W3C)或其它官方組織不維護(hù)

45、SAX,但在 XML 社區(qū)中,它是一個(gè)事實(shí)上的標(biāo)準(zhǔn)。</p><p>  SAX 分析經(jīng)過其的 XML 流??紤]以下 XML 代碼片斷:</p><p>  <?xml version="1.0"?></p><p><b>  <samples></b></p><p>  

46、<server>UNIX</server></p><p>  <monitor>color</monitor></p><p>  </samples></p><p>  一般情況下,SAX 處理器分析這段代碼將生成以下事件:</p><p>  Start document&l

47、t;/p><p>  Start element (samples)</p><p>  Characters (white space)</p><p>  Start element (server)</p><p>  Characters (UNIX)</p><p>  End element (server)&

48、lt;/p><p>  Characters (white space)</p><p>  Start element (monitor)</p><p>  Characters (color)</p><p>  End element (monitor)</p><p>  Characters (white sp

49、ace)</p><p>  End element (samples)</p><p>  基于關(guān)系數(shù)據(jù)庫的XML存儲(chǔ)技術(shù)</p><p>  本節(jié)將研究并討論現(xiàn)有的基于關(guān)系數(shù)據(jù)庫的XML存儲(chǔ)方法。</p><p>  現(xiàn)存的基于關(guān)系數(shù)據(jù)庫的XML存儲(chǔ)技術(shù)</p><p>  基于關(guān)系數(shù)據(jù)庫的XML存儲(chǔ)技術(shù)的核心是X

50、ML與關(guān)系數(shù)據(jù)庫之間的數(shù)據(jù)映射技術(shù),目前存在多種映射方法,根據(jù)是否使用XML模式可分為兩類::</p><p><b>  模式驅(qū)動(dòng)映射</b></p><p><b>  無模式映射</b></p><p>  XML模式定義了XML文檔的詞匯表、邏輯結(jié)構(gòu)和允許值,利用模式可以對XML實(shí)例文件的有效性進(jìn)行驗(yàn)證。模式驅(qū)動(dòng)映

51、射是以XML模式為基礎(chǔ)的映射,包括DTD(文檔類型定義)和XML Schema兩種方式,其廣泛適用于電子商務(wù)、數(shù)據(jù)交換和系統(tǒng)集成等領(lǐng)域的面向數(shù)據(jù)處理的XML文檔,如產(chǎn)品訂單、發(fā)票、時(shí)刻表等。他的優(yōu)點(diǎn)是模式驅(qū)動(dòng)映射的過程中不易丟失結(jié)構(gòu)信息,能較好的保證數(shù)據(jù)的正確性和完整性?,F(xiàn)有的模式驅(qū)動(dòng)映射方法很多,下一節(jié)將通過一個(gè)實(shí)例來介紹模式驅(qū)動(dòng)映射是如何實(shí)現(xiàn)的。</p><p>  由于模式驅(qū)動(dòng)映射要對模式進(jìn)行解析,其轉(zhuǎn)換過

52、程要比無模式映射復(fù)雜的多。而且在實(shí)際應(yīng)用中,尤其是廣闊的互聯(lián)網(wǎng)中,大多數(shù)的XML文檔都沒有DTD或Schema,或者DTD和Schema不易隨文檔保存,這是模式驅(qū)動(dòng)映射面臨的一個(gè)無法解決的困難,因此模式驅(qū)動(dòng)映射適用于那些已經(jīng)發(fā)展的比較規(guī)范的領(lǐng)域,而無模式映射技術(shù)的應(yīng)用更為廣泛。因此作者最終選擇設(shè)計(jì)一種無模式映射來完成本課題的任務(wù),這將在文章的第二章中詳細(xì)說明。</p><p>  一個(gè)模式驅(qū)動(dòng)映射實(shí)例</p

53、><p>  這個(gè)實(shí)例的映射方法叫做對象-關(guān)系映射。首先將XML模式轉(zhuǎn)化為對象模型,然后再將對象模型映射為關(guān)系模型。在討論之前我們先介紹兩個(gè)概念:</p><p>  簡單元素:只包含文本,不包含屬性和嵌套元素的元素</p><p>  復(fù)雜元素:有屬性或包含嵌套元素的元素</p><p>  下面討論基于對象-關(guān)系模型的XML-RDB的基本映射

54、原理,為了描述簡單,XML模式采用DTD進(jìn)行定義。</p><p>  1)設(shè)有如下DTD:</p><p>  <!ELEMENT A(B,C)></p><p>  <!ELEMENT B(#PCDATA)></p><p>  <!ELEMENT C(#PCDATA)></p>&

55、lt;p>  模式—〉對象的轉(zhuǎn)化:</p><p><b>  復(fù)雜元素A—〉類A</b></p><p>  簡單元素B、C—〉A(chǔ)的成員變量</p><p><b>  對象—〉關(guān)系的映射</b></p><p><b>  類A—〉表A</b></p>

56、<p>  B、C—〉表A中的列B、C</p><p>  綜上創(chuàng)建關(guān)系:RA(PK_A,B,C),PK_A是RA的主鍵(它是自動(dòng)生成的),列B和C的值是他們的PCDATA。</p><p>  2)設(shè)有如下DTD:</p><p>  <!ELEMENT A(B*,C,D)></p><p>  <!ELEME

57、NT B(#PCDATA)></p><p>  <!ELEMENT C(E)></p><p>  <!ELEMENT D(#PCDATA)></p><p>  <!ELEMENT E(#PCDATA)></p><p>  這里采用外鍵捕獲元素A和C及A和B之間的父子關(guān)系,因此可創(chuàng)建關(guān)系

58、RA(PK_A,D),RB(PK_B,FK_AB,B)及RC(PK_C,FK_AC,E),其中FK_AB和FK_AC分別是RB和RC關(guān)于RA的外鍵。RB的主鍵是(PK_B,FK_AB), RC的主鍵是(PK_C,FK_AC)。根據(jù)關(guān)系理論:在這個(gè)DTD中,A只允許出現(xiàn)一次,所以A和C是1:1的關(guān)系,F(xiàn)K_AC可建立在RA和RC任一關(guān)系中(此處建立在RC中);B可出現(xiàn)多次,即A和B是1:N的關(guān)系,F(xiàn)K_AB應(yīng)建立在RB中。假如A也可以出現(xiàn)

59、多次,即A和B為M:N的關(guān)系,則可創(chuàng)建關(guān)系RAB(FK_A,FK_B),其中FK_A和FK_B分別對應(yīng)RA和RB的PK_A和PK_B。</p><p>  3)對于復(fù)雜元素的屬性和文本,處理方法與簡單元素相同,作為復(fù)雜元素的屬性列處理。</p><p><b>  1.4 作者的工作</b></p><p>  本文工作就是設(shè)計(jì)一個(gè)XML數(shù)據(jù)到

60、關(guān)系數(shù)據(jù)庫的無模式映射方案,這將在文章的第二部分詳細(xì)講解。然后利用這個(gè)方案開發(fā)一個(gè)關(guān)系數(shù)據(jù)庫中XML數(shù)據(jù)裝入系統(tǒng),并利用這個(gè)軟件測試該方案的有效性和性能,這是第三部分要敘述的內(nèi)容。</p><p><b>  1.5 本章小結(jié)</b></p><p>  本章闡述了課題背景及其研究意義,講解了XML的基本概念和知識(shí),研究討論了現(xiàn)今基于關(guān)系數(shù)據(jù)庫XML存儲(chǔ)的主要方法并制

61、定了下面需要完成的任務(wù)及相應(yīng)的研究思路。</p><p>  2 無模式映射的設(shè)計(jì)</p><p><b>  2.1方案設(shè)計(jì)要求</b></p><p>  設(shè)計(jì)必須滿足以下要求:</p><p>  能夠?qū)o模式的XML數(shù)據(jù)按一定的結(jié)構(gòu)存入關(guān)系表中</p><p>  數(shù)據(jù)庫設(shè)計(jì)要支持DOM和

62、SAX兩種接口訪問</p><p>  易于實(shí)現(xiàn)關(guān)系數(shù)據(jù)庫到XML的反向轉(zhuǎn)換</p><p><b>  具有跨平臺(tái)性</b></p><p><b>  2.2設(shè)計(jì)思想</b></p><p>  將XML文檔中的數(shù)據(jù)信息全部存入關(guān)系表是最基本的要求,要滿足這個(gè)要求,就要分析文檔中的基本數(shù)據(jù)類型(

63、元素,屬性,文本等),將這些類型的節(jié)點(diǎn)映射為數(shù)據(jù)庫實(shí)體集。為了支持DOM和SAX兩種接口訪問,就需要分析這兩種接口在訪問XML文檔時(shí)需要什么樣的信息,這些信息一定要設(shè)計(jì)到數(shù)據(jù)庫中。比方說,DOM接口需要節(jié)點(diǎn)的父子關(guān)系,需要兄弟元素節(jié)點(diǎn)的順序,需要節(jié)點(diǎn)的層數(shù)。SAX接口需要元素的起始位置和結(jié)束位置,這些信息都需要存到數(shù)據(jù)庫中,才可以方便兩個(gè)接口對數(shù)據(jù)庫的訪問。綜上所述,數(shù)據(jù)庫設(shè)計(jì)思路就是將文檔中不同類型的節(jié)點(diǎn)作為數(shù)據(jù)庫實(shí)體集,節(jié)點(diǎn)之間的關(guān)

64、系作為聯(lián)系進(jìn)行初步設(shè)計(jì),然后再進(jìn)行數(shù)據(jù)庫優(yōu)化。詳細(xì)設(shè)計(jì)方案將在下一節(jié)介紹。</p><p><b>  2.3方案詳細(xì)設(shè)計(jì)</b></p><p>  根據(jù)XML數(shù)據(jù)節(jié)點(diǎn)類型,分別將文檔節(jié)點(diǎn)、元素節(jié)點(diǎn)、屬性節(jié)點(diǎn)和文本節(jié)點(diǎn)映射為四個(gè)表:DOCUMENT,ELEMENT,ATTRIBUTE,TEXT。另外將元素節(jié)點(diǎn)之間的關(guān)系(父子,兄弟)映射為一張全局關(guān)系表—FULLRE

65、LATION。對于CDATA數(shù)據(jù),將其看作TEXT數(shù)據(jù)處理,存入TEXT表中。而注釋語句將被忽略。</p><p>  E-R圖(實(shí)體集中只畫主碼)</p><p><b>  數(shù)據(jù)庫E-R圖</b></p><p>  2.3.2 實(shí)體集和聯(lián)系</p><p>  DOCUMENT實(shí)體集:文檔主體</p>

66、<p><b>  屬性:</b></p><p>  DOCID:DOCUMENT唯一標(biāo)識(shí)</p><p><b>  URI:文檔路徑</b></p><p>  VERSION:文檔版本</p><p>  ENCODING:文檔的字符碼格式</p><p>

67、;  ELEMENT實(shí)體集:元素主體</p><p><b>  屬性:</b></p><p>  ELEID:元素的文檔序(深度遍歷DOM樹的元素序號(hào))</p><p>  DOCID:元素所在文檔的ID</p><p><b>  NAME:元素名稱</b></p><p&

68、gt;  BEGIN:元素在文檔中的起始位置</p><p>  END:元素在文檔中的結(jié)束位置</p><p>  SEQUENCE:同層同父親元素的順序</p><p>  LAYER:元素所在層</p><p>  ATTRIBUTE實(shí)體集:屬性主體</p><p>  ATTID:屬性唯一標(biāo)識(shí)</p>

69、;<p>  ELEID:屬性所屬元素ID</p><p>  DOCID:屬性所屬文檔ID</p><p><b>  NAME:屬性名稱</b></p><p><b>  VALUE屬性值</b></p><p>  TEXT實(shí)體集:文本主體</p><p&g

70、t;  TEXTID:文本唯一標(biāo)識(shí)</p><p>  ELEID:文本所屬元素ID</p><p>  DOCID:文本所屬文檔ID</p><p>  CONTENT:文本內(nèi)容</p><p>  父子聯(lián)系:元素之間的父子關(guān)系—多個(gè)元素對應(yīng)一個(gè)父親</p><p><b>  屬性:</b>&

71、lt;/p><p>  ELEID:元素ID</p><p>  DOCID:元素所在文檔ID</p><p>  PARENTID:元素父親ID</p><p>  2.3.3 設(shè)計(jì)方法與策略</p><p>  四個(gè)實(shí)體集中最重要且最復(fù)雜的就是元素(ELEMENT)實(shí)體集,由于存儲(chǔ)要便于DOM和SAX兩種接口訪問,因此

72、需要為元素添加除名稱之外的屬性,下面分別說明這些屬性的設(shè)計(jì)思路。</p><p>  BEGIN和END:元素在文檔中的起始和結(jié)束位置,這是為了實(shí)現(xiàn)SAX接口能過順序訪問文檔而提供的屬性,例如下面的文檔,我們將在元素的開始標(biāo)志的左邊括號(hào)中標(biāo)出Begin數(shù),在元素的結(jié)束標(biāo)志的右邊括號(hào)中標(biāo)出END數(shù)。</p><p><b>  (1)<bib></b><

73、;/p><p>  (2)<book year="1994"></p><p>  (3)<title>TCP/IP Illustrated</title>(4)</p><p>  (5)<author>Bill</author>(6)</p><p>  (7)&

74、lt;publisher>Addison-Wesley</publisher>(8)</p><p>  (9)<price>65.95</price>(10)</p><p>  </book>(11)</p><p>  (12)<book year="1992"></p

75、><p>  (13)<title>Advanced Programming in the Unix environment</title>(14)</p><p>  (15)<author>Tom</author>(16)</p><p>  (17)<publisher>Addison-Wesley<

76、;/publisher>(18)</p><p>  (19)<price>65.95</price>(20)</p><p>  </book>(21)</p><p>  (22)<book year="2000"></p><p>  (23) <title

77、>Data on the Web</title>(24)</p><p>  (25)<author>Tony</author>(26)</p><p>  (27)< publisher> Addison-Wesley </publisher>(28)</p><p>  (29)<price

78、>50</price>(30)</p><p>  </book>(31)</p><p>  </bib>(32)</p><p>  ELEID、SEQUENCE、LAYER:這三個(gè)屬性是為了描述DOM樹結(jié)構(gòu)而設(shè)計(jì)的,ELEID表示元素的文檔序,SEQUENCE表示同層同父親節(jié)點(diǎn)的元素的順序,LAYER表示元素所在層,它

79、們與父子聯(lián)系中的PARENTID共同為DOM接口的訪問服務(wù)。</p><p>  文檔序指在DOM樹中從左至右深度遍歷元素節(jié)點(diǎn)時(shí)元素的序號(hào),對于下面的DOM數(shù),將元素的文檔序標(biāo)記在節(jié)點(diǎn)旁邊:</p><p><b>  文檔序示例圖</b></p><p>  為了更加清晰的區(qū)分DOM接口和SAX接口的訪問,作者在設(shè)計(jì)數(shù)據(jù)庫基本表時(shí)將BEGIN

80、和END屬性設(shè)置在ELEMENT表中,而將SEQUENCE、LAYER和PARENTID屬性設(shè)置在FULLRELATION關(guān)系表中,這樣SAX接口訪問ELEMENT表,而DOM接口訪問FULLRELATION表。</p><p>  2.3.4 數(shù)據(jù)庫基本表設(shè)計(jì)</p><p>  文檔表:DOCUMENT(DOCID,URI,VERSION,ENCODING)</p>&l

81、t;p><b>  數(shù)據(jù)約束:</b></p><p><b>  唯一:URI</b></p><p>  元素表:ELEMENT(ELEID,DOCID,NAME,BEGIN,END)</p><p><b>  數(shù)據(jù)約束:</b></p><p><b>

82、  外鍵:DOCID</b></p><p>  屬性表:ATTRIBUTE(ATTID,DOCID,ELEID,NAME,VALUE)</p><p><b>  數(shù)據(jù)約束:</b></p><p>  唯一:(DOCID,ELEID)</p><p>  外鍵:ELEMENT 的主鍵(DOCID,ELEI

83、D)</p><p>  文本表:TEXT(TEXTID,DOCID,ELEID,CONTENT)</p><p><b>  數(shù)據(jù)約束:</b></p><p>  唯一:(DOCID,ELEID)</p><p>  外鍵:ELEMENT 的主鍵(DOCID,ELEID)</p><p>  

84、全局關(guān)系表:FULLRELATION(ELEID,DOCID,LAYER,SEQUENCE,PARENTID)</p><p>  數(shù)據(jù)約束:外鍵:ELEMENT 的主鍵(DOCID,ELEID)</p><p>  2.3.5數(shù)據(jù)庫優(yōu)化</p><p>  根據(jù)查詢使用頻率為數(shù)據(jù)庫添加索引:</p><p>  Document:(URI)

85、</p><p>  Element:(DocID EleID)</p><p>  Element (Begin DocID EleID)</p><p>  Element (End DocID EleID)</p><p>  Attribute:(DocID EleID)</p><p>  Text:(Doc

86、ID EleID)</p><p>  FullRelation:(DocID EleID)</p><p><b>  2.3.6數(shù)據(jù)字典</b></p><p>  DOCUMENT表:</p><p><b>  ELEMENT表:</b></p><p>  ATTR

87、IBUTE表:</p><p><b>  TEXT表:</b></p><p>  FULLRELATION表:</p><p><b>  本章總結(jié)</b></p><p>  本章詳細(xì)描述了作者為XML-RDB的無模式映射設(shè)計(jì)的方案以及如此設(shè)計(jì)的原因。下一章將介紹作者利用此方案開發(fā)的關(guān)系數(shù)據(jù)庫

88、中XML數(shù)據(jù)裝入系統(tǒng)。</p><p>  3 關(guān)系數(shù)據(jù)庫中XML裝入系統(tǒng)</p><p><b>  3.1 任務(wù)概述</b></p><p>  本次開發(fā)任務(wù)是編寫一個(gè)面向用戶的關(guān)系數(shù)據(jù)庫中XML數(shù)據(jù)裝入系統(tǒng),用戶在軟件的界面中使用XML數(shù)據(jù)裝入功能從而將本地硬盤中的XML文檔裝入ORACLE數(shù)據(jù)庫服務(wù)器中。其中的XML-RDB數(shù)據(jù)映射部分

89、要用上一章設(shè)計(jì)的方法設(shè)計(jì)數(shù)據(jù)庫,并通過對軟件的測試驗(yàn)證該方法的性能。</p><p>  3.2 設(shè)計(jì)思想概述</p><p>  從用戶的角度出發(fā)分析,用戶需要一個(gè)易于操作的界面,因此界面是聯(lián)系用戶與應(yīng)用程序的橋梁,它是從用戶的角度出發(fā)系統(tǒng)結(jié)構(gòu)的第一層。界面得到用戶請求后要通知后臺(tái)程序處理,這種程序處理模塊形成了系統(tǒng)結(jié)構(gòu)的第二層,程序處理模塊處理了用戶的輸入后要將結(jié)果存入數(shù)據(jù)庫中,并將數(shù)

90、據(jù)庫裝入情況發(fā)送給界面,由界面通知用戶數(shù)據(jù)庫的裝入結(jié)果。因此他是內(nèi)存中的數(shù)據(jù)與數(shù)據(jù)庫之間的橋梁。綜上所述,作者認(rèn)為采用面向?qū)ο蟮某绦蛟O(shè)計(jì)方法比較適合此系統(tǒng)的設(shè)計(jì)??梢詫⑾到y(tǒng)的界面模塊設(shè)計(jì)為界面類,程序處理模塊設(shè)計(jì)為控制類,內(nèi)存中的一些中間結(jié)果設(shè)計(jì)為存儲(chǔ)類。這樣就形成了界面類對象接收輸入信息,由存儲(chǔ)類對象暫存,這些信息被控制類對象取出、運(yùn)算,最終得到的結(jié)果再存入存儲(chǔ)類對象,再由控制類對象將這些結(jié)果存入數(shù)據(jù)庫中。詳細(xì)設(shè)計(jì)情況將在下面幾節(jié)描述

91、。</p><p><b>  3.3 需求規(guī)定</b></p><p>  3.3.1 系統(tǒng)用例圖設(shè)計(jì)</p><p><b>  系統(tǒng)用例圖</b></p><p>  3.3.2 用例事件流</p><p>  用戶裝入文件事件流:</p><p&g

92、t;  用戶按裝入文件按鈕,用例開始。</p><p>  系統(tǒng)提示用戶選擇文件。</p><p>  用戶選擇文件并提交。</p><p>  若文件讀取失敗系統(tǒng)提示用戶并返回1</p><p>  系統(tǒng)讀取并解析文件,將解析結(jié)果存入數(shù)據(jù)庫。</p><p>  若存入失敗系統(tǒng)提示用戶并返回1</p>

93、<p>  5.系統(tǒng)提示用戶存儲(chǔ)成功,用例結(jié)束。</p><p>  用戶查看幫助時(shí)間流:</p><p>  用戶按幫助按鈕,用例開始。</p><p><b>  系統(tǒng)顯示幫助提示</b></p><p>  3.3.3 開發(fā)環(huán)境需求</p><p><b>  編程語言:

94、JAVA</b></p><p>  編譯環(huán)境:Eclipse</p><p>  數(shù)據(jù)庫環(huán)境:Oracle</p><p>  設(shè)計(jì)作圖工具:Ralation Rose2003</p><p><b>  3.4 系統(tǒng)設(shè)計(jì)</b></p><p>  3.4.1 系統(tǒng)體系結(jié)構(gòu)<

95、/p><p><b>  系統(tǒng)體系結(jié)構(gòu)圖</b></p><p>  3.4.2 序列圖設(shè)計(jì)</p><p>  用戶裝入文件事件流的序列圖設(shè)計(jì):</p><p>  1.角色:用戶,數(shù)據(jù)庫</p><p>  2.對象:界面,文件對象,文檔對象,元素對象,屬性對象,文本對象,控制對象,元素鏈表,屬性

96、鏈表,文本鏈表</p><p><b>  3.交互消息:</b></p><p>  用戶進(jìn)入界面選擇裝入文件功能</p><p>  界面提示用戶選擇文件</p><p>  用戶選擇一個(gè)文件并提交</p><p>  界面創(chuàng)建一個(gè)文件對象</p><p>  控制對象

97、解析文件(利用DOM)</p><p>  控制對象創(chuàng)建文檔對象,元素對象表,屬性對象表,文本對象表</p><p>  控制對象將解析出來的元素對象存入元素鏈表</p><p>  控制對象將解析出來的屬性對象存入屬性鏈表</p><p>  控制對象將解析出來的文本對象存入文本鏈表</p><p>  控制對象將存

98、儲(chǔ)在內(nèi)存中的對象存入數(shù)據(jù)庫</p><p>  控制對象向界面發(fā)消息通知存儲(chǔ)是否成功</p><p>  界面向用戶顯示存儲(chǔ)是否成功</p><p><b>  數(shù)據(jù)裝入的序列圖</b></p><p>  3.4.3 類設(shè)計(jì) </p><p>  1.界面類:界面利用Javax.swing包中的

99、類設(shè)計(jì)</p><p>  2.存儲(chǔ)單元類:存儲(chǔ)單元的各類只實(shí)現(xiàn)基本的存儲(chǔ)功能,不含除set和get以外的放法。</p><p>  (1)文件類:調(diào)用java.io.file類存儲(chǔ)文件</p><p> ?。?)文檔類(MyDocument):對應(yīng)數(shù)據(jù)庫中DOCUMENT表</p><p>  屬性說明:String uri:文檔路徑&l

100、t;/p><p>  String version:文檔版本</p><p>  String encoding:字符碼格式</p><p>  方法說明:每個(gè)屬性有g(shù)et和set方法</p><p>  void ToString():</p><p>  打印對象信息,供測試使用</p><p>

101、;  MyDocument類</p><p> ?。?)元素類(MyElement):對應(yīng)數(shù)據(jù)庫中ELEMENT表和FULLRELATION表</p><p>  屬性說明:String name:元素名</p><p>  int begin:元素在文檔中的起始位置</p><p>  int end:元素在文檔中的結(jié)束位置</p&g

102、t;<p>  int layer:元素所在層</p><p>  int sequence:同層元素位置</p><p>  MyElement parent:元素父節(jié)點(diǎn)</p><p>  MyDocument doc:元素所在文檔</p><p>  int order:文檔序</p><p>  

103、int hash:對應(yīng)的DOM樹中Element類對象的hash值</p><p>  方法說明:每個(gè)屬性有g(shù)et和set方法</p><p>  void ToString():</p><p>  打印對象信息,供測試使用</p><p>  MyElement類</p><p> ?。?)屬性類(MyAttr):

104、對應(yīng)數(shù)據(jù)庫中的ATTRIBUTE類</p><p>  屬性說明:String name:屬性名稱</p><p>  String value:屬性值</p><p>  MyElement elem:所屬元素</p><p>  MyDocument doc:所在文檔</p><p>  方法說明:每個(gè)屬性有g(shù)e

105、t和set方法</p><p>  void ToString():</p><p>  打印對象信息,供測試使用</p><p><b>  MyAttr類</b></p><p> ?。?)文本類(MyText):對應(yīng)數(shù)據(jù)庫中的TEXT表</p><p>  屬性說明:String conte

106、nt:文檔內(nèi)容</p><p>  MyElement elem:所屬元素</p><p>  MyDocument doc:所屬文檔</p><p>  方法說明:每個(gè)屬性有g(shù)et和set方法</p><p>  void ToString():</p><p>  打印對象信息,供測試使用</p>&

107、lt;p><b>  MyText類</b></p><p> ?。?)鏈表類:調(diào)用java.util.LinkedList類來存儲(chǔ)元素表,屬性表,文本表</p><p><b>  3.控制單元:</b></p><p> ?。?)DomControl:此類為程序中最重要控制類,所有核心算法都在這個(gè)類中。它的功能是

108、將解析XML文件,生成DOM樹,通過對樹操作得到需要的節(jié)點(diǎn)信息并將它們存入鏈表中,以作為后面數(shù)據(jù)存儲(chǔ)的輸入。</p><p>  屬性:org.w3c.dom.Node doc:樹根節(jié)點(diǎn)</p><p>  DbControl dbc:數(shù)據(jù)庫控制類對象</p><p>  MyDocument:mydoc:文檔對象</p><p>  Li

109、nkedList myElemList:元素鏈表</p><p>  LinkedList myAttrList:屬性鏈表</p><p>  LinkedList myTextList:文本鏈表</p><p><b>  方法:</b></p><p>  boolean createDom(String uri)&

110、lt;/p><p>  此方法以文檔路徑(URI)為參數(shù)解析XML文件,創(chuàng)建dom樹,將樹的根節(jié)點(diǎn)賦給屬性doc。解析成功返回true,失敗返回false。</p><p>  void deepVisit()</p><p>  此方法通過對DOM樹深度遍歷得到元素的文檔序、begin、end信息,并將這些信息存到相應(yīng)的存儲(chǔ)單元中。</p><p&

111、gt;  void visit()</p><p>  此方法層遍歷dom樹,將得到的相應(yīng)的節(jié)點(diǎn)信息存入創(chuàng)建的存儲(chǔ)單元對象中,在調(diào)用deepVisit()方法深度遍歷樹,再將相應(yīng)的信息存入這些存儲(chǔ)單元對象中,最后把這些對象分別存入屬性mydoc,myElementList,myAttrList,myTextList。</p><p>  boolean hasWord(String s)&

112、lt;/p><p>  此方法判斷參數(shù)s是否含有非空格和換行符的其他字符,又返回true,沒有返回false。</p><p>  MyDocument getMyDocument(org.w3c.dom.Node doc)</p><p>  此方法將Dom樹中的文檔節(jié)點(diǎn)轉(zhuǎn)換為Mydocument對象</p><p>  MyElement g

113、etMyElement(org.w3c.dom.Node element)</p><p>  此方法將Dom樹中的元素節(jié)點(diǎn)轉(zhuǎn)換為MyElement對象</p><p>  MyAttr getMyAttr(org.w3c.dom.Node attr)</p><p>  此方法將Dom樹中的屬性節(jié)點(diǎn)轉(zhuǎn)換為MyAttr對象</p><p> 

114、 MyText getMyText(org.w3c.dom.Node text)</p><p>  此方法將Dom樹中的文本節(jié)點(diǎn)轉(zhuǎn)換為MyAttr對象</p><p>  DomControl類</p><p> ?。?)DBControl(數(shù)據(jù)庫控制類)</p><p>  屬性:Connect con:數(shù)據(jù)庫連接對象</p>

115、;<p>  Statement stmt:執(zhí)行語句</p><p>  ResultSet rs:結(jié)果集</p><p><b>  方法:</b></p><p>  boolean openDB()</p><p><b>  打開數(shù)據(jù)庫</b></p><p

116、>  boolean close()</p><p><b>  關(guān)閉數(shù)據(jù)庫</b></p><p>  boolean proofDocumentUri(String uri)</p><p>  驗(yàn)證文檔是否存在,存在返回true,不存在返回false</p><p>  int queryMaxID(Stri

117、ng column,String table)</p><p>  查找表table中的列column的最大ID</p><p>  int queryDocumentID(String uri)</p><p>  查找文檔的DOCID值</p><p>  boolean insertDoc(MyDocument doc)</p&g

118、t;<p><b>  在文檔表中插入文檔</b></p><p>  boolean insertElem(MyElement elem)</p><p><b>  在元素表中插入元素</b></p><p>  boolean insertAttr(MyAttr attr)</p><

119、;p><b>  在屬性表中插入屬性</b></p><p>  boolean insertText(MyText text)</p><p><b>  在文本表中插入文本</b></p><p>  boolean insertFullRelation(MyElement met)</p><

120、;p>  在全局關(guān)系表中插入行信息</p><p>  DBControl類</p><p>  3.4.4 類關(guān)系圖</p><p><b>  類關(guān)系圖</b></p><p>  3.4.5 算法的實(shí)現(xiàn)策略</p><p>  程序中的算法主要集中在DomControl類中,下面就其中

121、一些算法的實(shí)現(xiàn)進(jìn)行說明。</p><p><b>  求文檔序</b></p><p>  只需對DOM樹進(jìn)行深度遍歷即可得到,如下面DOM樹,文檔序標(biāo)在節(jié)點(diǎn)旁邊:</p><p><b>  文檔序示例圖</b></p><p>  根據(jù)DOM樹求元素的begin和end值</p>

122、<p>  begin和end是為SAX服務(wù)的屬性,利用SAX處理XML文檔很容易得到,但由于程序使用DOM接口解析XML文檔,所以必須利用DOM樹得到begin和end值。方法就是設(shè)int型變量begin和end跟蹤DOM樹的深度遍歷。如下圖:</p><p>  Begin、End示例圖</p><p><b>  該樹對應(yīng)文檔即為:</b></p

123、><p>  (1)<GOODS></p><p><b>  (2)<ITEM></b></p><p>  (3)<NAME>……</NAME>(4)</p><p>  (5)<PRICE>……</PRICE>(6)</p><

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論