国产精品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>

      可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法

      文檔序號(hào):4482568閱讀:119來(lái)源:國(guó)知局
      專利名稱:可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法
      技術(shù)領(lǐng)域
      本發(fā)明涉及可擴(kuò)展標(biāo)記語(yǔ)言領(lǐng)域,尤指一種可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法。
      背景技術(shù)
      隨著Internet的迅猛發(fā)展,xml(Extensible Markup Language,可擴(kuò)展標(biāo)記語(yǔ)言)作為Internet上數(shù)據(jù)表示的新標(biāo)準(zhǔn),以其具有的自描述性、靈活性、擴(kuò)展性和平臺(tái)無(wú)關(guān)性等優(yōu)勢(shì),正在被廣泛的應(yīng)用于各種Web應(yīng)用中。
      近年來(lái)許多研究工作致力于將數(shù)據(jù)庫(kù)技術(shù)應(yīng)用于xml文件上,將xml文件映射至關(guān)系數(shù)據(jù)庫(kù)表內(nèi)。如何將xml文件映射至關(guān)系數(shù)據(jù)庫(kù)表中是目前本領(lǐng)域的重要研究課題之一。
      現(xiàn)有xml文件至關(guān)系數(shù)據(jù)庫(kù)表的映射方法都是采用手工映射,并且有些映射方法只支持xml文件本身到數(shù)據(jù)庫(kù)的映射,不支持模式(schema)的映射。R.Bourret、C.Bornhovd和A.Buchmann提出了利用一個(gè)實(shí)體來(lái)實(shí)現(xiàn)xml文件和關(guān)系數(shù)據(jù)庫(kù)之間數(shù)據(jù)的轉(zhuǎn)化。實(shí)體的形式表現(xiàn)為xml文件,而且還詳細(xì)地描述了每個(gè)xml節(jié)點(diǎn)與關(guān)系數(shù)據(jù)庫(kù)中的表、字段的對(duì)應(yīng)關(guān)系。但是這個(gè)實(shí)體很繁復(fù),查找實(shí)體中的節(jié)點(diǎn)來(lái)獲得與關(guān)系數(shù)據(jù)庫(kù)的對(duì)應(yīng)關(guān)系的效率也很低。雖然可以利用表來(lái)存儲(chǔ)xml節(jié)點(diǎn)與關(guān)系數(shù)據(jù)庫(kù)中表與記錄的對(duì)應(yīng)關(guān)系,但是這樣處理會(huì)導(dǎo)致不能靈活修改。而本發(fā)明提出了新的xml Schema到關(guān)系數(shù)據(jù)庫(kù)模式的映射規(guī)則,基于此提出了映射模板的概念,這個(gè)模板可以直接使用去驅(qū)動(dòng)數(shù)據(jù)庫(kù)表的生成。

      發(fā)明內(nèi)容
      本發(fā)明要解決的問(wèn)題是提供一種基于模式的可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法。
      為了解決上述問(wèn)題,本發(fā)明可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法的技術(shù)方案包括下述步驟10)將模式間的依賴關(guān)系存放在關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)表中;20)為可擴(kuò)展標(biāo)記語(yǔ)言文件中的每一個(gè)名稱空間創(chuàng)建一個(gè)映射文件,所述映射文件包括該模式中所有的復(fù)雜類型、簡(jiǎn)單類型、全局元素以及相應(yīng)子元素;30)為映射文件中每一個(gè)復(fù)雜類型、全局元素以及出現(xiàn)不止一次的簡(jiǎn)單類型元素分別生成一個(gè)與其對(duì)應(yīng)的關(guān)系數(shù)據(jù)庫(kù)表,將其所包含的子元素和出現(xiàn)小于等于一次的簡(jiǎn)單類型元素作為與其對(duì)應(yīng)的關(guān)系數(shù)據(jù)庫(kù)表中的字段。
      所述步驟20)可細(xì)分為下述步驟200)獲取可擴(kuò)展標(biāo)記語(yǔ)言文件的模式對(duì)象模型;
      201)根據(jù)模式對(duì)象模型獲取每一個(gè)模式所對(duì)應(yīng)的名稱空間并為每一個(gè)名稱空間創(chuàng)建一個(gè)映射文件;重復(fù)步驟202)至208)填充每一個(gè)映射文件,202)獲取每個(gè)名稱空間的全部全局元素和復(fù)雜類型;203)為每一個(gè)全局元素生成一個(gè)可擴(kuò)展標(biāo)記語(yǔ)言元素映射節(jié)點(diǎn),并設(shè)置與其相應(yīng)的屬性;204)生成可擴(kuò)展標(biāo)記語(yǔ)言元素映射集合節(jié)點(diǎn),且該集合節(jié)點(diǎn)包含步驟203)中生成的所有節(jié)點(diǎn);205)為每一個(gè)復(fù)雜類型生成一個(gè)可擴(kuò)展標(biāo)記語(yǔ)言類型節(jié)點(diǎn),并設(shè)置與其相應(yīng)的屬性;206)找出每一個(gè)復(fù)雜類型所包含的所有子元素;207)為每一個(gè)子元素生成一個(gè)可擴(kuò)展標(biāo)記語(yǔ)言元素節(jié)點(diǎn)并將其放入其所屬的復(fù)雜類型的擴(kuò)展標(biāo)記語(yǔ)言類型節(jié)點(diǎn)中;208)生成可擴(kuò)展標(biāo)記語(yǔ)言類型集合節(jié)點(diǎn),該集合節(jié)點(diǎn)包括步驟205)中生成的所有可擴(kuò)展標(biāo)記語(yǔ)言類型節(jié)點(diǎn)。
      所述與可擴(kuò)展標(biāo)記語(yǔ)言類型節(jié)點(diǎn)相應(yīng)的屬性為復(fù)雜類型標(biāo)識(shí),id,用于標(biāo)識(shí)該復(fù)雜類型名稱,name,用于表示該復(fù)雜類型的全局名稱名字空間,namespace,用于表示該復(fù)雜類型的名字空間;與可擴(kuò)展標(biāo)記語(yǔ)言元素節(jié)點(diǎn)相應(yīng)的屬性為名稱,name,用于表示該元素的全局名稱原始名稱,localName,用于表示由模式對(duì)象模型指定的該元素的原始名稱元素類別,elementType,用于表示該元素的類別元素類型,type,用于表示該元素的類型元素標(biāo)識(shí),id,用于標(biāo)識(shí)該元素。
      所述步驟30)可細(xì)分為下述步驟300)為映射文件中的每一個(gè)可擴(kuò)展標(biāo)記語(yǔ)言類型節(jié)點(diǎn)生成一個(gè)關(guān)系數(shù)據(jù)庫(kù)表,表名為其屬性復(fù)雜類型標(biāo)識(shí);301)將每一個(gè)可擴(kuò)展標(biāo)記語(yǔ)言類型節(jié)點(diǎn)所包含的所有屬性和出現(xiàn)小于等于一次的簡(jiǎn)單類型元素作為與其相應(yīng)的關(guān)系數(shù)據(jù)庫(kù)表的字段;302)為每一個(gè)出現(xiàn)不止一次的簡(jiǎn)單類型元素生成一個(gè)子關(guān)系數(shù)據(jù)庫(kù)表,該表名為其屬性元素標(biāo)識(shí);303)為每一個(gè)關(guān)系數(shù)據(jù)庫(kù)表建立下列字段記錄序號(hào),uuid_id,用于表示記錄順序?qū)嵗孛Q,uuid_name,用于表示可擴(kuò)展標(biāo)記語(yǔ)言文件實(shí)例中該元素的名稱實(shí)例標(biāo)識(shí),uuid_docid,用于標(biāo)識(shí)可擴(kuò)展標(biāo)記語(yǔ)言文件實(shí)例父元素標(biāo)識(shí),uuid_parentid,用于標(biāo)識(shí)該元素的父元素元素順序,uuid_order,用于表示可擴(kuò)展標(biāo)記語(yǔ)言文件實(shí)例中元素出現(xiàn)的順序。
      本發(fā)明可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法還包括步驟建立數(shù)據(jù)庫(kù)系統(tǒng)表,所述數(shù)據(jù)庫(kù)系統(tǒng)表包括模式引用關(guān)系表,Schemacrossref,用于存放可擴(kuò)展標(biāo)記語(yǔ)言文件模式間的依賴關(guān)系;模式表,Schema,用于存放可擴(kuò)展標(biāo)記語(yǔ)言文件模式與其對(duì)應(yīng)的映射文件的對(duì)應(yīng)關(guān)系;文件實(shí)例表,DocInstance,用于存放可擴(kuò)展標(biāo)記語(yǔ)言文件存儲(chǔ)標(biāo)識(shí)。
      與現(xiàn)有技術(shù)相比,本發(fā)明可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法的有益效果是由于采用為每一個(gè)名稱空間生成一個(gè)映射文件,然后根據(jù)映射文件生成關(guān)系數(shù)據(jù)庫(kù)表,可以使得模式(模式定義了可擴(kuò)展標(biāo)記語(yǔ)言類型)所定義的一類xml文件共享一套數(shù)據(jù)庫(kù)表,而無(wú)需就單獨(dú)的xml文件進(jìn)行數(shù)據(jù)庫(kù)映射。
      由于采用將可擴(kuò)展標(biāo)記語(yǔ)言文件的每一個(gè)復(fù)雜類型、全局元素以及出現(xiàn)不止一次的簡(jiǎn)單類型分別生成一個(gè)與其對(duì)應(yīng)的關(guān)系數(shù)據(jù)庫(kù)表,不考慮該元素是由哪個(gè)xml schema所引用。這樣使生成的表不依賴于引用該元素的xmlschema,而只依賴于定義該元素的xml schema。因而使所有相同類型的元素都會(huì)存儲(chǔ)在一起,這樣在查詢某一元素時(shí),只查詢與其對(duì)應(yīng)的表即可,而不必再考慮與其有關(guān)的xml schema,從而可實(shí)現(xiàn)對(duì)xml文件數(shù)據(jù)的高效查詢。


      圖1是本發(fā)明可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法流程圖;圖2是圖1中步驟20)進(jìn)一步劃分的流程圖;圖3是圖1中步驟30)進(jìn)一步劃分的流程圖;圖4是實(shí)施例中四個(gè)模式的依賴關(guān)系示意圖。
      具體實(shí)施例方式
      如圖1所示,本發(fā)明可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法包括下述步驟10)將模式間的依賴關(guān)系存放在關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)表中;20)為可擴(kuò)展標(biāo)記語(yǔ)言文件中的每一個(gè)名稱空間創(chuàng)建一個(gè)映射文件,所述映射文件包括該模式中所有的復(fù)雜類型、簡(jiǎn)單類型、全局元素以及相應(yīng)的子元素;30)為映射文件中每一個(gè)復(fù)雜類型、全局元素以及出現(xiàn)不止一次的簡(jiǎn)單類型元素分別生成一個(gè)與其對(duì)應(yīng)的關(guān)系數(shù)據(jù)庫(kù)表,其所包含的子元素和出現(xiàn)小于等于一次的簡(jiǎn)單類型元素作為與其對(duì)應(yīng)的關(guān)系數(shù)據(jù)庫(kù)表中的字段。
      通過(guò)為每一個(gè)名稱空間創(chuàng)建一個(gè)映射文件,然后根據(jù)映射文件將xml類型(復(fù)雜類型、全局元素以及出現(xiàn)不止一次的簡(jiǎn)單類型元素)映射成關(guān)系數(shù)據(jù)庫(kù)表,從而實(shí)現(xiàn)了xml類型至關(guān)系數(shù)據(jù)庫(kù)表的映射,因而可以利用關(guān)系數(shù)據(jù)庫(kù)的成熟技術(shù)來(lái)處理(存儲(chǔ)、檢索等)xml文件。
      如圖2所示,所述步驟20)細(xì)分為下述步驟200)獲取可擴(kuò)展標(biāo)記語(yǔ)言文件的模式對(duì)象模型;201)根據(jù)模式對(duì)象模型獲取每一個(gè)模式所對(duì)應(yīng)的名稱空間并為每一個(gè)名稱空間創(chuàng)建一個(gè)映射文件;重復(fù)步驟202至步驟208)填充每一個(gè)映射文件202)獲取每個(gè)名稱空間的所有的全局元素和復(fù)雜類型;203)為每一個(gè)全局元素生成一個(gè)XmlMappingElement(可擴(kuò)展標(biāo)記語(yǔ)言元素)節(jié)點(diǎn),并設(shè)置與其相應(yīng)的屬性;204)生成XmlMappingElements(可擴(kuò)展標(biāo)記語(yǔ)言元素集合)節(jié)點(diǎn),XmlMappingElements節(jié)點(diǎn)包含步驟203)中生成的所有XmlMappingElement節(jié)點(diǎn);205)為每一個(gè)復(fù)雜類型生成一個(gè)XmlMappingType(可擴(kuò)展標(biāo)記語(yǔ)言類型)節(jié)點(diǎn),并設(shè)置與其相應(yīng)的屬性;206)找出每一個(gè)復(fù)雜類型所包含的所有子元素;207)為每一個(gè)子元素生成一個(gè)XmlMappingElement節(jié)點(diǎn)并將其放入其所屬的復(fù)雜類型的XmlMappingType節(jié)點(diǎn)中;208)生成XmlMappingTypes(可擴(kuò)展標(biāo)記語(yǔ)言類型集合)節(jié)點(diǎn),XmlMappingTypes節(jié)點(diǎn)包括步驟205)中生成的所有XmlMappingType節(jié)點(diǎn)。
      如表一所示,所述與XmlMappingType節(jié)點(diǎn)相應(yīng)的屬性為復(fù)雜類型標(biāo)識(shí),id,用于標(biāo)識(shí)該復(fù)雜類型,名稱,name,用于表示該復(fù)雜類型的全局名稱,名字空間,namespace,用于表示該復(fù)雜類型的名字空間。
      如表二所示,與XmlMappingElement節(jié)點(diǎn)相應(yīng)的屬性為名稱,name,用于表示該元素的全局名稱,原始名稱,localName,用于表示由模式對(duì)象模型指定的該元素的原始名稱,元素類別,elementType,用于表示該元素的類別,元素類型,type,用于表示該元素的類型,元素標(biāo)識(shí),id,用于標(biāo)識(shí)該元素,最小出現(xiàn)次數(shù),minOccurs,用于表示在某個(gè)復(fù)雜類型中的最小出現(xiàn)次數(shù),最大出現(xiàn)次數(shù),maxOccurs,用于表示在某個(gè)復(fù)雜類型中的最大出現(xiàn)次數(shù)。
      表一


      表二

      如圖3所示,所述步驟30)又細(xì)分為下述步驟300)為映射文件中的每一個(gè)XmlMappingType節(jié)點(diǎn)生成一個(gè)關(guān)系數(shù)據(jù)庫(kù)表,表名為其屬性復(fù)雜類型標(biāo)識(shí)(id);301)將每一個(gè)XmlMappingType節(jié)點(diǎn)所包含的所有屬性和出現(xiàn)小于等于一次的簡(jiǎn)單類型元素作為與其相應(yīng)的關(guān)系數(shù)據(jù)庫(kù)表的字段;302)為每一個(gè)出現(xiàn)不止一次的簡(jiǎn)單類型元素生成一個(gè)子關(guān)系數(shù)據(jù)庫(kù)表,該表名為其屬性元素標(biāo)識(shí);303)為每一個(gè)關(guān)系數(shù)據(jù)庫(kù)表建立下列字段,記錄序號(hào),uuid_id,用于表示記錄順序?qū)嵗孛Q,uuid_name,用于表示XML文件實(shí)例中該元素的名稱實(shí)例標(biāo)識(shí),uuid_docid,用于標(biāo)識(shí)XML文件實(shí)例,父元素標(biāo)識(shí),uuid_parentid,用于標(biāo)識(shí)該元素的父元素,元素順序,uuid_order,用于表示XML文件實(shí)例中元素出現(xiàn)的順序。
      本發(fā)明可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法還包括步驟建立數(shù)據(jù)庫(kù)系統(tǒng)表,所述數(shù)據(jù)庫(kù)系統(tǒng)表包括模式引用關(guān)系表,Schemacrossref,用于存放可擴(kuò)展標(biāo)記語(yǔ)言文件模式間的依賴關(guān)系,包括字段名稱空間(namespace)和名稱空間引用(refednamespace);模式表,Schema,用于存放可擴(kuò)展標(biāo)記語(yǔ)言文件模式與其對(duì)應(yīng)的映射文件的對(duì)應(yīng)關(guān)系,包括字段名稱空間(namespace)、名字(name)、模式內(nèi)容(text)和映射文件名(mapping);文檔實(shí)例表,DocInstance,用于存放可擴(kuò)展標(biāo)記語(yǔ)言文件存儲(chǔ)標(biāo)識(shí),包括字段文檔實(shí)例標(biāo)識(shí)(id)、名字(name)、文檔集合表外鍵(collectionId(FK)和文檔原始內(nèi)容(text);復(fù)雜類型表,complexType,用于記錄數(shù)據(jù)庫(kù)導(dǎo)入的模式所生成的數(shù)據(jù)庫(kù)表(id為生成的表名),包括字段復(fù)雜類型標(biāo)識(shí)(id)、名字(name)、名稱空間表外鍵(namespace(FK))和類型(type);全局元素表,docRoot,用于保存數(shù)據(jù)庫(kù)導(dǎo)入的模式所定義的全局元素,包括字段全局元素標(biāo)識(shí)(id)、名字(name)和名稱空間(namespace(FK));文檔集合表,Collection,用于存放一類XML文件的集合,包括字段文件標(biāo)識(shí)(id)、名字(name)和全局元素表外鍵(docrootid(FK))。
      下面通過(guò)一個(gè)具體的實(shí)例來(lái)詳述本發(fā)明可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法的技術(shù)方案。
      下面的xml文件有四個(gè)模式。
      模式一company.xsd&lt;?xml version=″1.0″e(cuò)ncoding=″UTF-8″?&gt;
      &lt;xsschema targetNamespace=″http//org.xmldb.company″xmlnsxs=″http//www.w3.org/2001/XMLSchema″xmlns=″http//org.xmldb.company″xmlnsper=″http//org.xmldb.personnel″e(cuò)lementFormDefault=″qualified″attributeFormDefault=″unqualified″&gt;
      ;依賴模式personal.xsd&lt;xsimport namespace=″http//org.xmldb.personnel″schemaLocation=″personal.xsd″/&gt;
      &lt;xselement name=″company″&gt;
      &lt;xsannotation&gt;
      &lt;xsdocumentation&gt;Comment describing your root element&lt;/xsdocumentation&gt;
      &lt;/xsannotation&gt;
      &lt;xscomplexType&gt;
      &lt;xssequence&gt;
      &lt;xselement name=″e(cuò)mployee″type=″e(cuò)mployee″/&gt;
      &lt;xselement name=″department″&gt;
      &lt;xscomplexType&gt;
      &lt;xssequence&gt;
      &lt;xselement name=″manager″&gt;
      &lt;xscomplexType&gt;
      &lt;xssequence&gt;
      &lt;xselement name=″rank″type=″xsstring″/&gt;
      &lt;xselement ref=″perperson″/&gt;
      &lt;/xssequence&gt;
      &lt;/xscomplexType&gt;
      &lt;/xselement&gt;
      &lt;xselement name=″name″type=″xsstring″/&gt;
      &lt;/xssequence&gt;
      &lt;/xscomplexType&gt;
      &lt;/xselement&gt;
      &lt;/xssequence&gt;
      &lt;/xscomplexType&gt;
      &lt;/xselement&gt;
      &lt;xscomplexType name=″e(cuò)mployee″&gt;
      &lt;xssequence&gt;
      &lt;xselement ref=″perperson″maxOccurs=″unbounded″/&gt;
      &lt;/xssequence&gt;
      &lt;/xscomplexType&gt;&lt;/xsschema&gt;
      模式二government.xsd&lt;?xml version=″1.0″e(cuò)ncoding=″UTF-8″?&gt;
      &lt;xsschema targetNamespace=″http//org.xmldb.government″xmlnsxs=″http//www.w3.org/2001/XMLSchema″xmlnsper=″http//org.xmldb.personnel″xmlns=″http//org.xmldb.government″e(cuò)lementFormDefault=″qualified″attributeFormDefault=″unqualified″&gt;
      ;依賴模式personal.xsd&lt;xsimport namespace=″http//org.xmldb.personnel″schemaLocation=″personal.xsd″/&gt;
      &lt;xselement name=″government″&gt;
      &lt;xsannotation&gt;
      &lt;xsdocumentation&gt;Comment describing your root element&lt;/xsdocumentation&gt;
      &lt;/xsannotation&gt;
      &lt;xscomplexType&gt;
      &lt;xssequence&gt;
      &lt;xselement name=″officers″&gt;
      &lt;xscomplexType&gt;
      &lt;xssequence&gt;
      &lt;xselement ref=″perperson″maxOccurs=″unbounded″/&gt;
      &lt;/xssequence&gt;
      &lt;/xscomplexType&gt;
      &lt;/xselement&gt;
      &lt;xselement name=″name″type=″xsstring″/&gt;
      &lt;xselement name=″affiliated″type=″xsstring″/&gt;
      &lt;/xssequence&gt;
      &lt;/xscomplexType&gt;
      &lt;/xselement&gt;
      &lt;/xsschema&gt;
      模式三personal.xsd&lt;?xml version=″1.0″e(cuò)ncoding=″UTF-8″?&gt;
      &lt;xsschema targetNamespace=″http//org.xmldb.personnel″xmlnsxs=″http//www.w3.org/2001/XMLSchema″xmlns=″http//org.xmldb.personnel″xmlnsaddr=″http//org.xmldb.address″e(cuò)lementFormDefault=″qualified″&gt;
      ;依賴模式address.xsd&lt;xsimport namespace=″http//org.xmldb.address″schemaLocation=″address.xsd″/&gt;
      ;模式定義的全局元素&lt;xselement name=″personnel″&gt;
      ;模式定義的復(fù)雜類型&lt;xscomplexType&gt;
      &lt;xssequence&gt;
      &lt;xselement ref=″person″maxOccurs=″unbounded″/&gt;
      &lt;/xssequence&gt;
      &lt;/xscomplexType&gt;
      &lt;xsunique name=″uniquel″&gt;
      &lt;xsselector xpath=″person″/&gt;
      &lt;xsfield xpath=″name/given″/&gt;
      &lt;xsfield xpath=″name/family″/&gt;
      &lt;/xsunique&gt;
      &lt;xskey name=″e(cuò)mpid″&gt;
      &lt;xsselector xpath=″person″/&gt;
      &lt;xsfield xpath=″@id″/&gt;
      &lt;/xskey&gt;
      &lt;xskeyref name=″keyref1″refer=″e(cuò)mpid″&gt;
      &lt;xsselector xpath=″person″/&gt;
      &lt;xsfield xpath=″link/@manager″/&gt;
      &lt;/xskeyref&gt;
      &lt;/xselement&gt;
      ;模式定義的全局元素&lt;xselement name=″person″&gt;
      ;模式定義的復(fù)雜類型&lt;xscomplexType&gt;
      &lt;xssequence&gt;
      &lt;xselement ref=″name″/&gt;
      ;Schema定義的重復(fù)多次的簡(jiǎn)單類型&lt;xselement ref=″e(cuò)mail″ minOccurs=″0″maxOccurs=″unbounded″/&gt;
      &lt;xselement ref=″url″minOccurs=″0″maxOccurs=″unbounded″/&gt;
      &lt;xselement name=″addresses″&gt;
      ;模式定義的復(fù)雜類型&lt;xscomplexType&gt;
      &lt;xssequence maxOccurs=″unbounded″&gt;
      &lt;xselement ref=″addraddress″/&gt;
      &lt;/xssequence&gt;
      &lt;/xscomplexType&gt;
      &lt;/xselement&gt;
      &lt;/xssequence&gt;
      &lt;xsattribute name=″id″type=″xsID″use=″required″/&gt;
      &lt;xsattribute name=″note″type=″xsstring″/&gt;
      &lt;xsattribute name=″contr″default=″false″&gt;
      &lt;xssimpleType&gt;
      &lt;xsrestriction base=″xsstring″&gt;
      &lt;xsenumeration value=″true″/&gt;
      &lt;xsenumeration value=″false″/&gt;
      &lt;/xsrestriction&gt;
      &lt;/xssimpleType&gt;
      &lt;/xsattribute&gt;
      &lt;xsattribute name=″salary″type=″xsinteger″/&gt;
      &lt;/xscomplexType&gt;
      &lt;/xselement&gt;
      ;模式定義的全局元素&lt;xselement name=″name″&gt;
      ;模式定義的復(fù)雜類型&lt;xscomplexType&gt;
      &lt;xsall&gt;
      &lt;xselement ref=″family″/&gt;
      &lt;xselement ref=″given″/&gt;
      &lt;/xsall&gt;
      &lt;/xscomplexType&gt;
      &lt;/xselement&gt;
      ;模式定義的全局元素&lt;xselement name=″family″type=″xsstring″/&gt;
      ;模式定義的全局元素&lt;xselement name=″given″type=″xsstring″/&gt;
      ;模式定義的全局元素&lt;xselement name=″e(cuò)mail″type=″xsstring″/&gt;
      ;模式定義的全局元素&lt;xselement name=″url″&gt;
      ;模式定義的復(fù)雜類型&lt;xscomplexType&gt;
      &lt;xsattribute name=″href″type=″xsstring″default=″″http//″/&gt;
      &lt;/xscomplexType&gt;
      &lt;/xselement&gt;
      &lt;/xsschema&gt;
      模式四address.xsd&lt;?xml version=″1.0″e(cuò)ncoding=″UTF-8″?&gt;
      &lt;xsschema targetNamespace=″http//org.xmldb.address″xmlnsxs=″http//www.w3.org/2001/XMLSchema″xmlns=″http//org.xmldb.address″e(cuò)lementFormDefault=″qualified″attributeFormDefault=″unqualified″&gt;
      &lt;xselement name=″address″&gt;
      &lt;xsannotation&gt;
      &lt;xsdocumentation&gt;Comment describing your root element&lt;/xsdocumentation&gt;
      &lt;/xsannotation&gt;
      &lt;xscomplexType&gt;
      &lt;xssequence&gt;
      &lt;xselement name=″tel″type=″xsstring″/&gt;
      &lt;xselement name=″postcode″type=″xsstring″/&gt;
      &lt;xselement name=″street″type=″xsstring″/&gt;
      &lt;/xssequence&gt;
      &lt;/xscomplexType&gt;
      &lt;/xselement&gt;
      &lt;/xsschema&gt;
      首先,建立數(shù)據(jù)庫(kù)系統(tǒng)表docInstance、collection、complexType、schema、schemacrossref和docRoot。
      然后,使用通用的解析器將schema作為普通的xml文件進(jìn)行解析,分析其中的xsimport元素,將xml schema間的依賴(import)關(guān)系存入數(shù)據(jù)庫(kù)系統(tǒng)表Schemacrossref中。在導(dǎo)入某個(gè)具體的模式時(shí),由于其可能依賴其它的模式,如果這些依賴的模式?jīng)]有導(dǎo)入到schemacrossref中,則將其一并導(dǎo)入。
      如圖4所示,上述四個(gè)模式的依賴關(guān)系為company.xsd和government.xsd均依賴personal.xsd,personal.xsd依賴address.xsd。
      導(dǎo)入government.xsd后表Schemacrossref的存儲(chǔ)結(jié)果為

      然后導(dǎo)入company.xsd后表Schemacrossref的存儲(chǔ)結(jié)果為

      下面本例采用schema解析器,例如apach xerces,獲取符合w3c規(guī)范的schema對(duì)象模型,再根據(jù)schema對(duì)象模型獲取其所引用的名稱空間,本例中company.xsd所獲得的schema對(duì)象所引用的名稱空間有三個(gè),分別是http//org.xmldb.companyhttp//org.xmldb.personnelhttp//org.xmldb.address
      再為每一個(gè)名稱空間創(chuàng)建一個(gè)映射文件,分別是mapping-company.xml、mapping-personal.xml和mapping-address.xml。本例將模式與映射文件的對(duì)應(yīng)關(guān)系存放在數(shù)據(jù)庫(kù)系統(tǒng)表schema中,存儲(chǔ)后表schema結(jié)果為

      下面描述模式三personal.xsd生成映射文件mapping-personal.xml的過(guò)程。
      在該過(guò)程之前先采用下述方法對(duì)personal.xsd中的類型和元素進(jìn)行命名將全局元素命名為“{element}{+目標(biāo)名稱空間+}+元素的名稱屬性值”;將全局復(fù)雜類型命名為“{type}{+目標(biāo)名稱空間+}+復(fù)雜類型的名稱屬性值”;將局部元素命名為“包含該局部元素的復(fù)雜類型的全局名字+“/”+該局部元素的名稱屬性值”;將局部復(fù)雜類型命名為該局部復(fù)雜類型的父元素的全局名字;將簡(jiǎn)單類型命名為其基礎(chǔ)類型的全局名字。
      故該模式定義的所有全局元素及其全局名字如下personnel{element}{http//org.xmldb.personnel}personelperson{element}{http//org.xmldb.personnel}personname{element}{http//org.xmldb.personnel}namefamily{element}{http//org.xmldb.personnel}familygiyen{element}{http//org.xmldb.personnel}giyenemail{element}{http//org.xmldb.personnel}emailurl{element}{http//org.xmldb.personnel}url五個(gè)復(fù)雜類型的全局名字為{element}{http//org.xmldb.personnel}personel{element}{http//org.xmldb.personnel}person{element}{http//org.xmldb.personnel}name{element}{http//org.xmldb.personnel}url{element}{http//org.xmldb.personnel}person/addresses局部簡(jiǎn)單類型的全局名字為{type}{http//www.w3.org/2001/XMLSchema}String該模式的元素和類型有了全局名字后,即能夠區(qū)分不同的類型和元素,映射文件mapping-personal.xml的過(guò)程如下獲取personal.xsd中的全部全局元素和復(fù)雜類型。
      所獲得的全局元素為personnel,person,name,family,giyen,email,url
      所獲得的復(fù)雜類型為{element}{http//org.xmldb.personnel}personnel{element}{http//org.xmldb.personnel}person{element}{http//org.xmldb.personnel}name{element}{http//org.xmldb.personnel}url{element}{http//org.xmldb.personnel}person/addresses然后對(duì)每一個(gè)全局元素生成一個(gè)XmlMappingElement節(jié)點(diǎn)并設(shè)置其相應(yīng)的屬性。再生成XmlMappingElements節(jié)點(diǎn),該節(jié)點(diǎn)包含所有生成的XmlMappingElement節(jié)點(diǎn)。本例為;xml元素集合節(jié)點(diǎn)&lt;XmlMappingElements&gt;
      ;全局元素person&lt;XmlMappingElementname=″{element}{http//org.xmldb.personnel}person″localName=″person″e(cuò)lementType=″complex″type=″{elemenr}{http//org.xmldb.personnel}person″id=″F8522164_DC8A_498E_888E_D7ACF6291D39″/&gt;
      ;全局元素personnel&lt;XmlMappingElementname=″{element}{http//org.xmldb.personnel}personnel″localName=″personnel″e(cuò)lementType=″complex″type=″{element}{http//org.xmldb.personnel}personnel″id=″DB1D8AEA_A320_4203_BC3F_B2FE7D4AE326″/&gt;
      ;全局元素url&lt;XmlMappingElementname=″{element}{http//org.xmldb.personnel}url″localName=″url″e(cuò)lementType=″complex″type=″{element}{http//org.xmldb.personnel}url″id=″2E1E9830_AB88_4DC8_8B72_A3DE735CA329″/&gt;
      ;全局元素family&lt;XmlMappingElementname=″{element}{http//org.xmldb.personnel}family″localName=″family″e(cuò)lementType=″simple″type=″{type}{http//www.w3.org/2001/XMLSchema}string″id=″3DC9DBB9_9E7E_4CF4_BDA8_AOAF486E5364″/&gt;
      ;全局元素name&lt;XmlMappingElementname=″{element}{http//org.xmldb.personnel}name″localName=″name″e(cuò)lementType=″complex″type=″{element}{http//org.xmldb.personnel}name″id=″5F8ECF2E_82E5_48E7_BD5D_C21FAC8CC297″/&gt;
      ;全局元素given&lt;XmlMappingElementname=″{element}{http//org.xmldb.personnel}given″localName=″given″e(cuò)lementType=″simple″
      type=″{type}{http//www.w3.org/2001/XMLSchema}string″id=″11B6ACF7_CC08_415C_8650_FB5730BE0137″/&gt;
      ;全局元素email&lt;XmlMappingElementname=″{element}{http//org.xmldb.personnel}email″localName=″e(cuò)mail″e(cuò)lementType=″simple″type=″{type}{http//www.w3.org/2001/XMLSchema}string″id=″CAAAF143_2956_454D_8AF3_8E59F56BBA4E″/&gt;
      &lt;/XmlMappingElements&gt;
      最后將每一個(gè)復(fù)雜類型生成XmlMappingType節(jié)點(diǎn)并設(shè)置相應(yīng)屬性,還要找出每一個(gè)復(fù)雜類型所包含的所有子元素(包括屬性)。對(duì)每一個(gè)子元素生成XmlMappingElement節(jié)點(diǎn),并將其放入其所屬的復(fù)雜類型的XmlMappingType節(jié)點(diǎn)中。再生成XmlMappingTypes節(jié)點(diǎn),該節(jié)點(diǎn)包含所有生成的XmlMappingType節(jié)點(diǎn)。
      Personal.xsd生成的映射文件中XmlMappingTypes和XmlMappingType為;xml類型集合節(jié)點(diǎn)&lt;xmlMappingTypes&gt;
      ;復(fù)雜類型{element}{http//org.xmldb.personnel}personnel&lt;XmlMappingType id=″94737D4C_F969_48FF_A4A1_823FA8647BAD″name=″{element}{http//org.xmldb.personnel}personnel″namespace=″http//org.xmldb.personnel″&gt;
      ;子元素person&lt;XmlMappingElementname=″{element}{http//org.xmldb.personnel}person″localName=″person″e(cuò)lementType=″complex″type=″{element}{http//org.xmldb.personnel}person″id=″F8522164_DC8A_498E_888E_D7ACF6291D39″/&gt;
      &lt;/XmlMappingType&gt;
      ;復(fù)雜類型{element}{http//org.xmldb.personnel}person&lt;XmlMappingType id=″D62E1F94_35CA_4362_BB4E_DC39C58EACA3″name=″{element}{http//org.xmldb.personnel}person″namespace=″http//org.xmldb.personnel″&gt;
      ;子元素id&lt;XmlMappingElement name=″id″localName=″id″e(cuò)lementType=″attribute″type=″{type}{http//www.w3.org/2001/XMLSchema}ID″id=″81195F3E_ED21_44C6_A0D5_F4F0E44BC159″/&gt;
      ;子元素note&lt;XmlMappingElement name=″note″localName=″note″e(cuò)lementType=″attribute″type=″{type}{http//www.w3.org/2001/XMLSchema}string″id=″7AA4C149_DB7A_4F75_91DF_B01EF4B5B40D″/&gt;
      ;子元素contr&lt;XmlMappingElement name=″contr″localName=″contr″e(cuò)lementType=″attribute″
      type=″{type}{http//www.w3.org/2001/XMLSchema}string″id=″11C9845E_B1BF_4BFC_A1D0_CD6D89F50F41″/&gt;
      ;子元素salary&lt;XmlMappingElement name=″salary″localName=″salary″e(cuò)lementType=″attribute″type=″{type}{http//www.w3.org/2001/XMLSchema}integer″id=″34009506_9DC1_4468_A654_E66BFFE49FCD″/&gt;
      ;子元素name&lt;XmlMappingElementname=″{element}{http//org.xmldb.personnel}name″localName=″name″e(cuò)lementType=″complex″type=″{element}{http//org.xmldb.personnel}name″id=″5F8ECF2E_82E5_48E7_BD5D_C21FAC8CC297″/&gt;
      ;子元素email&lt;XmlMappingElementname=″{element}{http//org.xmldb.personnel}email″localName=″e(cuò)mail″e(cuò)lementType=″simple″type=″{type}{http//www.w3.org/2001/XMLSchema}string″id=″CAAAF143_2956_454D_8AF3_8E59F56BBA4E″minOccurs=″0″maxOccurs=″100000″/&gt;
      ;子元素url&lt;XmlMappingElementname=″{element}{http//org.xmldb.personnel}url″localName=″url″e(cuò)lementType=″complex″type=″{element}{http//org.xmldb.personnel}url″id=″2E1Eg830_AB88_4DC8_8B72_A3DE735CA329″/&gt;
      ;子元素addresses&lt;XmlMappingElementname=″{element}{http//org.xmldb.personnel}person/addresses″localName=″addresses″e(cuò)lementType=″complex″type=″{element}{http//org.xmldb.personnel}person/addresses″id=″1D2AAg3A_0DEF_4924_A88F_C433515B20F6″/&gt;
      &lt;/XmlMappingType&gt;
      ;復(fù)雜類型{element}{http//org.xmldb.personnel}name&lt;XmlMappingType id=″45E5901B_C36F_4F9E_8888_ADB29B816770″name=″{element}{http//org.xmldb.personnel}name″namespace=″http//org.xmldb.personnel″&gt;
      ;子元素family&lt;XmlMappingElementname=″{element}{http//org.xmldb.personnel}family″localName=″family″e(cuò)lementType=″simple″type=″{type}{http//www.w3.org/2001/XMLSchema}string″id=″3DC9DBB9_9E7E_4CF4_BDA8_A0AF486E5364″minOccurs=″1″maxOccurs=″1″/&gt;
      ;子元素given&lt;XmlMappingElementname=″{element}{http//org.xmldb.personnel}given″localName=″given″
      elementType=″simple″type=″{type}{http//www.w3.org/2001/XMLSchema}string″id=″11B6ACF7_CC08_415C_8650_FB5730BE0137″minOccurs=″1″maxOccurs=″1″/&gt;
      &lt;/XmlMappingType&gt;
      ;復(fù)雜類型{element}{http//org.xmldb.personnel}url&lt;XmlMappingType id=″22F2B421_815E_4E95_9D49_C67FA72D5265″name=″{element}{http//org.xmldb.personnel}url″namespace=″http//org.xmldb.personnel″&gt;
      ;子元素href&lt;XmlMappingElement name=″href″localName=″href″e(cuò)lementType=″attribute″type=″{type}{http//www.w3.org/2001/XMLSchema}string″id=″5ACA5FFB_8E8A_4E9A_A17F_86FFCD1EE1EC″/&gt;
      &lt;/XmlMappingType&gt;
      ;復(fù)雜類型{element}{http//org.xmldb.personnel}person/addresses&lt;XmlMappingType id=″3E043791_8941_471A_A95D_A3DC796BBD5C″name=″{element}{http//org.xmldb.personnel}person/addresses″namespace=″http//org.xmldb.personnel″&gt;
      ;子元素address&lt;XmlMappingElementname=″{element}{http//org.xmldb.address}address″localName=″address″e(cuò)lementType=″complex″type=″{element}{http//org.xmldb.address}address″id=″35CE114E_D191_4534_A321_9BA88F9CB0BF″/&gt;
      &lt;/XmlMappingType&gt;
      &lt;/XmlMappingTypes&gt;
      下面根據(jù)映射文件mapping-personal.xml生成關(guān)系數(shù)據(jù)庫(kù)表。
      首先對(duì)于mapping-personal.xml中的每一個(gè)XmlMappingType生成一張表,為了使表名唯一,本例采用XmlMappingType中的id作為該表的表名;其次將XmlMappingType所包含的所有屬性和出現(xiàn)小于等于一次的簡(jiǎn)單類型元素作為該表的字段;再者對(duì)于出現(xiàn)不止一次的簡(jiǎn)單類型元素生成一張子表,其表名為XmlMappingElement的id;最后,對(duì)所有生成的表都建立公共字段uuid_id,uuid_name,uuid_docid,uuid_parented,uuid_order。
      注對(duì)于一個(gè)復(fù)雜類型元素只生成一張表,不管該復(fù)雜類型是由哪個(gè)xmlschema所引用。這樣使生成的表不依賴于引用復(fù)雜類型的xml schema,而只依賴于定義該復(fù)雜類型元素的xml schema。因而使所有相同類型的元素都會(huì)存儲(chǔ)在一起,不管其來(lái)源,從而有利于對(duì)特定元素的查詢。
      對(duì)于mapping-personal.xml中有五個(gè)XmlMappingType元素,同時(shí)簡(jiǎn)單類型元素{element}{http//org.xmldb.personnel}email的最大出現(xiàn)次數(shù)大于1,故應(yīng)生成六張表,將生成表的情況存放在數(shù)據(jù)庫(kù)系統(tǒng)表complextype中為

      其中每張表都包含如下公共字段(其中AB8E7A48_544A_48E3_8E4C_81268F986E10為本例指定的UUID)

      對(duì)于每張表除了包含上述公共字段外,還包含了schema定義的所屬類型的所有屬性和簡(jiǎn)單類型元素的字段。
      表94737D4C_F969_48FF_A4Al_823FA8647BAD({element}{http//org.xmldb.personnel}personnel)包含的字段為

      表D62EIF94_35CA_4362_BB4E_DC39C58EACA3({element}{http//org.xmldb.personnel}person)包含的字段為

      表CAAAF143_2956_454D_8AF3_8E59F56BBA4E({element}{http//org.xmldb.personnel}person/email)包含的字段為

      表45E5901B_C36F_4F9E_8888_ADB29B816770({element}{http//org.xmldb.personnel}name)包含的字段為

      表22F2B421_815E_4E95_9D49_C67FA72D5265({element}{http//org.xmldb.personnel}url)包含的字段為

      表3E043791_8941_471A_A95D_A3DC796BBD5C({element}{http//org.xmldb.personnel}person/addresses)包含的字段為

      綜上所述,采用本發(fā)明可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法的技術(shù)方案,可以將xml類型(復(fù)雜類型、全局元素和出現(xiàn)次數(shù)不止一次的簡(jiǎn)單類型元素)映射成關(guān)系數(shù)據(jù)庫(kù)表,這樣就可以利用關(guān)系數(shù)據(jù)庫(kù)成熟的技術(shù)來(lái)處理(存儲(chǔ)、查詢等)xml文件。
      以上所述僅是本發(fā)明可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法原理的前提下,還可以作出若干改進(jìn)和潤(rùn)飾,這些改進(jìn)和潤(rùn)飾也應(yīng)視為本發(fā)明可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法的保護(hù)范圍。
      權(quán)利要求
      1.一種可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法,其特征在于,包括下述步驟10)將模式間的依賴關(guān)系存放在關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)表中;20)為可擴(kuò)展標(biāo)記語(yǔ)言文件中的每一個(gè)名稱空間創(chuàng)建一個(gè)映射文件,所述映射文件包括該模式中所有的復(fù)雜類型、簡(jiǎn)單類型、全局元素以及相應(yīng)子元素;30)為映射文件中每一個(gè)復(fù)雜類型、全局元素以及出現(xiàn)不止一次的簡(jiǎn)單類型元素分別生成一個(gè)與其對(duì)應(yīng)的關(guān)系數(shù)據(jù)庫(kù)表,其所包含子元素和出現(xiàn)小于等于一次的簡(jiǎn)單類型元素作為與其對(duì)應(yīng)的關(guān)系數(shù)據(jù)庫(kù)表中的字段。
      2.如權(quán)利要求1所述的可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法,其特征在于,所述步驟20)又進(jìn)一步分為下述步驟200)獲取可擴(kuò)展標(biāo)記語(yǔ)言文件的模式對(duì)象模型;201)根據(jù)模式對(duì)象模型獲取每一個(gè)模式所對(duì)應(yīng)的名稱空間并為每一個(gè)名稱空間創(chuàng)建一個(gè)映射文件;重復(fù)步驟202)至208)填充每一個(gè)映射文件,202)獲取每個(gè)名稱空間的全部全局元素和復(fù)雜類型;203)為每一個(gè)全局元素生成一個(gè)可擴(kuò)展標(biāo)記語(yǔ)言元素映射節(jié)點(diǎn),并設(shè)置與其相應(yīng)的屬性;204)生成可擴(kuò)展標(biāo)記語(yǔ)言元素映射集合節(jié)點(diǎn),且該集合節(jié)點(diǎn)包含步驟203)中生成的所有節(jié)點(diǎn);205)為每一個(gè)復(fù)雜類型生成一個(gè)可擴(kuò)展標(biāo)記語(yǔ)言類型節(jié)點(diǎn),并設(shè)置與其相應(yīng)的屬性;206)找出每一個(gè)復(fù)雜類型所包含的所有子元素;207)為每一個(gè)子元素生成一個(gè)可擴(kuò)展標(biāo)記語(yǔ)言元素節(jié)點(diǎn)并將其放入其所屬的復(fù)雜類型的擴(kuò)展標(biāo)記語(yǔ)言類型節(jié)點(diǎn)中;208)生成可擴(kuò)展標(biāo)記語(yǔ)言類型集合節(jié)點(diǎn),該集合節(jié)點(diǎn)包括步驟205)中生成的所有可擴(kuò)展標(biāo)記語(yǔ)言類型節(jié)點(diǎn)。
      3.如權(quán)利要求2所述的可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法,其特征在于,所述與可擴(kuò)展標(biāo)記語(yǔ)言類型節(jié)點(diǎn)相應(yīng)的屬性為復(fù)雜類型標(biāo)識(shí),id,用于標(biāo)識(shí)該復(fù)雜類型名稱,name,用于表示該復(fù)雜類型的全局名稱名字空間,namespace,用于表示該復(fù)雜類型的名字空間;與可擴(kuò)展標(biāo)記語(yǔ)言元素節(jié)點(diǎn)相應(yīng)的屬性為名稱,name,用于表示該元素的全局名稱原始名稱,localName,用于表示由模式對(duì)象模型指定的該元素的原始名稱元素類別,elementType,用于表示該元素的類別元素類型,type,用于表示該元素的類型元素標(biāo)識(shí),id,用于標(biāo)識(shí)該元素。
      4.如權(quán)利要求3所述的可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法,其特征在于,所述步驟30)又進(jìn)一步分為下述步驟300)為映射文件中的每一個(gè)可擴(kuò)展標(biāo)記語(yǔ)言類型節(jié)點(diǎn)生成一個(gè)關(guān)系數(shù)據(jù)庫(kù)表,表名為其屬性復(fù)雜類型標(biāo)識(shí);301)將每一個(gè)可擴(kuò)展標(biāo)記語(yǔ)言類型節(jié)點(diǎn)所包含的所有屬性和出現(xiàn)小于等于一次的簡(jiǎn)單類型元素作為與其相應(yīng)的關(guān)系數(shù)據(jù)庫(kù)表的字段;302)為每一個(gè)出現(xiàn)不止一次的簡(jiǎn)單類型元素生成一個(gè)子關(guān)系數(shù)據(jù)庫(kù)表,該表名為其屬性元素標(biāo)識(shí);303)為每一個(gè)關(guān)系數(shù)據(jù)庫(kù)表建立下列字段記錄序號(hào),uuid_id,用于表示記錄順序?qū)嵗孛Q,uuid_name,用于表示可擴(kuò)展標(biāo)記語(yǔ)言文件實(shí)例中該元素的名稱實(shí)例標(biāo)識(shí),uuid_docid,用于標(biāo)識(shí)可擴(kuò)展標(biāo)記語(yǔ)言文件實(shí)例父元素標(biāo)識(shí),uuid_parentid,用于標(biāo)識(shí)該元素的父元素元素順序,uuid_order,用于表示可擴(kuò)展標(biāo)記語(yǔ)言文件實(shí)例中元素出現(xiàn)的順序。
      5.如權(quán)利要求4所述的可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法,其特征在于,還包括步驟建立數(shù)據(jù)庫(kù)系統(tǒng)表,所述數(shù)據(jù)庫(kù)系統(tǒng)表包括模式引用關(guān)系表,Schemacrossref,用于存放可擴(kuò)展標(biāo)記語(yǔ)言文件模式間的依賴關(guān)系;模式表,Schema,用于存放可擴(kuò)展標(biāo)記語(yǔ)言文件模式與其對(duì)應(yīng)的映射文件的對(duì)應(yīng)關(guān)系;文件實(shí)例表,DocInstance,用于存放可擴(kuò)展標(biāo)記語(yǔ)言文件存儲(chǔ)標(biāo)識(shí)。
      全文摘要
      本發(fā)明公開(kāi)一種可擴(kuò)展標(biāo)記語(yǔ)言類型至關(guān)系數(shù)據(jù)庫(kù)表的映射方法,包括步驟10)將模式間的依賴關(guān)系存放在關(guān)系數(shù)據(jù)庫(kù)系統(tǒng)表中;20)為可擴(kuò)展標(biāo)記語(yǔ)言文件中的每一個(gè)名稱空間創(chuàng)建一個(gè)映射文件,所述映射文件包括該模式中所有的復(fù)雜類型、簡(jiǎn)單類型、全局元素以及相應(yīng)子元素;30)為映射文件中每一個(gè)復(fù)雜類型、全局元素以及出現(xiàn)不止一次的簡(jiǎn)單類型元素分別生成一個(gè)與其對(duì)應(yīng)的關(guān)系數(shù)據(jù)庫(kù)表,其所包含子元素和出現(xiàn)小于等于一次的簡(jiǎn)單類型元素作為與其對(duì)應(yīng)的關(guān)系數(shù)據(jù)庫(kù)表中的字段??梢允沟媚J?模式定義了可擴(kuò)展標(biāo)記語(yǔ)言類型)所定義的一類可擴(kuò)展標(biāo)記語(yǔ)言文件共享一套數(shù)據(jù)庫(kù)表,而無(wú)需就單獨(dú)的可擴(kuò)展標(biāo)記語(yǔ)言文件進(jìn)行數(shù)據(jù)庫(kù)映射。
      文檔編號(hào)G06F17/30GK1632794SQ200410102620
      公開(kāi)日2005年6月29日 申請(qǐng)日期2004年12月27日 優(yōu)先權(quán)日2004年12月27日
      發(fā)明者李安渝, 嚴(yán)兵, 傅朝霞, 秦良娟, 丁蔚, 耿建光, 秦懷平, 董勝濤 申請(qǐng)人:中國(guó)科學(xué)院軟件研究所, 神州數(shù)碼軟件有限公司
      網(wǎng)友詢問(wèn)留言 已有0條留言
      • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
      1