欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

可擴展標記語言文件檢索方法

文檔序號:4482572閱讀:137來源:國知局
專利名稱:可擴展標記語言文件檢索方法
技術領域
本發(fā)明涉及可擴展標記語言領域,尤指一種可擴展標記語言文件導出方法。
背景技術
隨著Internet的迅猛發(fā)展,xml(Extensible Markup Language,可擴展標記語言)作為Internet上數(shù)據(jù)表示的新標準,以其具有的自描述性、靈活性、擴展性和平臺無關性等優(yōu)勢,正在被廣泛的應用于各種Web應用中。
近年來許多研究工作致力于將數(shù)據(jù)庫技術應用于xml文件的處理上。利用數(shù)據(jù)庫成熟的技術來存儲xml文件。目前主流的xml數(shù)據(jù)庫形式是利用關系數(shù)據(jù)庫來存儲xml文件,例如Oracle9i、SQL Server 2000等關系數(shù)據(jù)庫。
利用關系數(shù)據(jù)庫存儲xml文件后,如何能夠高效地將xml文件的元素檢索出來一直受到業(yè)界的強烈關注。

發(fā)明內容
本發(fā)明要解決的問題是提供一種能夠高效檢索可擴展標記語言文件元素的可擴展標記語言文件檢索方法。
為了解決上述問題,本發(fā)明可擴展標記語言文件檢索方法,用于對存儲在關系數(shù)據(jù)庫表中的可擴展標記語言文件進行檢索,關系數(shù)據(jù)庫系統(tǒng)表中存放系統(tǒng)信息,關系數(shù)據(jù)庫表中存放可擴展標記語言文件元素,關系數(shù)據(jù)庫系統(tǒng)表之模式表中存放名稱空間與其對應的映射文件,包括下述步驟1)通過待檢索元素的全局名字以獲取該元素的名稱空間,所述全局名字中有一部分用于表示名稱空間;2)通過名稱空間以獲取可擴展標記語言文件的映射文件;3)通過映射文件找到待檢索元素及其子元素的類型,從而獲取與其相應的所有關系數(shù)據(jù)庫表;4)通過關系數(shù)據(jù)庫表中取得待檢索元素。
所述步驟4)又進一步細分為下述步驟40)從關系數(shù)據(jù)庫表中選出所有符合條件的記錄,并根據(jù)映射文件構造可擴展標記語言元素節(jié)點;41)將符合條件的多個元素匯集成一個結果集返回。
與現(xiàn)有技術相比,本發(fā)明可擴展標記語言文件檢索方法的有益效果是由于根據(jù)待檢索元素的全局名字以獲得名稱空間,根據(jù)名稱空間獲得該名稱空間的映射文件,根據(jù)映射文件可找到與待檢索元素相關的數(shù)據(jù)庫表,即可檢索出待檢索元素,而不必考慮多表連接等問題,從而可實現(xiàn)對xml文件元素的高效查詢。


圖1是本發(fā)明可擴展標記語言文件檢索方法流程圖;圖2是圖1中步驟1)進一步劃分的流程圖;圖3是實施例中四個模式的依賴關系示意圖。
具體實施例方式
在介紹本發(fā)明可擴展標記語言文件檢索方法的技術方案之前,先將xml文件存入關系數(shù)據(jù)庫表中,然后再采用本發(fā)明可擴展標記語言文件檢索方法對存入關系數(shù)據(jù)庫表中的xml文件的元素進行檢索。
本例的xml文件有四個模式。
模式一company.xsd<?xml version=″1.0″encoding=″UTF-8″?><xsschema targetNamespace=″http://org.xmldb.company″xmlnsxs=″http://www.w3.org/2001/XMLSchema″xmlns=″http://org.xmldb.company″xmlnsper=″http://org.xmldb.personnel″elementFormDefault=″qualified″attributeFormDefault=″unqualified″>;依賴模式personal.xsd<xsimport namespace=″http://org.xmldb.personnel″schemaLocation=″personal.xsd″/>
<xselement name=″company″>
<xsannotation>
<xsdocumentation>Comment describing your root element</xsdocumentation>
</xsannotation>
<xscomplexType>
<xssequence>
<xselement name=″employee″type=″employee″/>
<xselement name=″department″>
<xscomplexType>
<xssequence>
<xselement name=″manager″>
<xscomplexType>
<xssequence>
<xselement name=″rank″type=″xsstring″/>
<xselement ref=″perperson″/>
</xssequence>
</xscomplexType>
</xselement>
<xselement name=″name″type=″xsstring″/>
</xssequence>
</xscomplexType>
</xselement>
</xssequence>
</xscomplexType></xselement><xscomplexType name=″employee″>
<xssequence>
<xselement ref=″perperson″maxOccurs=″unbounded″/>
</xssequence></xscomplexType></xsschema>
模式二government.xsd<?xml version=″1.0″encoding=″UTF-8″?><xsschema targetNamespace=″http://org.xmldb.government″xmlnsxs=″http://www.w3.org/2001/XMLSchema″xmlnsper=″http://org.xmldb.personnel″xmlns=″http://org.xmldb.govemment″elementFormDefault=″qualified″attributeFormDefault=″unqualified″>;依賴模式personal.xsd<xsimport namespace=″http://org.xmldb.personnel″schemaLocation=″personal.xsd″/><xselement name=″govemment″>
<xsannotation>
<xsdocumentation>Comment describing your root element</xsdocumentation>
</xsannotation>
<xscomplexType>
<xssequence>
<xselement name=″officers″>
<xscomplexType>
<xssequence>
<xselement ref=″perperson″maxOccurs=″unbounded″/>
</xssequence>
</xscomplexType>
</xselement>
<xselement name=″name″type=″xsstring″/>
<xselement name=″affiliated″type=″xsstring″/>
</xssequence>
</xscomplexType>
</xselement></xsschema>
模式三personal.xsd<?xml version=″1.0″encoding=″UTF-8″?><xsschema targetNamespace=″http://org.xmldb.personnel″xmlnsxs=″http://www.w3.org/2001/XMLSchema″xmlns=″http://org.xmldb.personnel″xmlnsaddr=″http://org.xmldb.address″elementFormDefault=″qualified″>;依賴模式address.xsd<xsimport namespace=″http://org.xmldb.address″schemaLocation=″address.xs″/>;模式定義的全局元素<xselement name=″personnel″>;模式定義的復雜類型<xscomplexType>
<xssequence>
<xselement ref=″person″maxOccurs=″unbounded″/>
</xssequence>
</xscomplexType>
<xsunique name=″uniquel″>
<xsselector xpath=″person″/>
<xsfield xpath=″name/given″/>
<xsfield xpath=″name/family″/>
</xsunique>
<xskey name=″empid″>
<xsselector xpath=″person″/>
<xsfield xpath=″@id″/>
</xskey>
<xskeyref name=″keyrefl″refer=″empid″>
<xsselector xpath=″person″/>
<xsfield xpath=″link/@manager″/>
</xskeyref></xselement>;模式定義的全局元素<xselement name=″person″>;模式定義的復雜類型<xscomplexType>
<xssequence>
<xselement ref=″name″/>;Schema定義的重復多次的簡單類型元素<xselement ref=″email″minOccurs=″0″maxOccurs=″unbounded″/>
<xselement ref=″url″minOccurs=″0″maxOccurs=″unbounded″/>
<xselement name=″addresses″>;模式定義的復雜類型<xscomplexType>
<xssequence maxOccurs=″unbounded″>
<xselement ref=″addraddress″/>
</xssequence>
</xscomplexType>
</xselement>
</xssequence>
<xsattribute name=″id″type=″xsID″use=″required″/>
<xsattribute name=″note″type=″xsstring″/>
<xsattribute name=″contr″default=″false″>
<xssimpleType>
<xsrestriction base=″xsstring″>
<xsenumeration value=″true″/>
<xsenumeration value=″false″/>
</xsrestriction>
</xssimpleType>
</xsattribute>
<xsattribute name=″salary″type=″xsinteger″/>
</xscomplexType></xselement>;模式定義的全局元素<xselement name=″name″>;模式定義的復雜類型<xscomplexType>
<xsall>
<xselement ref=″family″/>
<xselementref=″given″/>
</xsall>
</xscomplexType></xselement>;模式定義的全局元素<xsclement name=″family″type=″xsstring″/>;模式定義的全局元素<xselement name=″given″type=″xsstring″/>;模式定義的全局元素<xselement name=″email″type=″xsstring″/>;模式定義的全局元素<xselement name=″url″>;模式定義的復雜類型<xscomplexType>
<xsattribute name=″href″type=″xsstring″default=″http://″/>
</xscomplexType></xselement></xsschema>
模式四address.xsd<?xml version=″1.0″encoding=″UTF-8″?><xsschema targetNamespace=″http://org.xmldb.address″xmlnsxs=″http://www.w3.org/2001/XMLSchema″xmlns=″http://org.xmldb.address″elementFormDefault=″qualified″attributeFormDefault=″unqualified″>;Schema所定義的全局元素address<xselement name=″address″>
<xsannotation>
<xsdocumentation>Comment descrlbing your root element</xsdocumentation>
</xsannotation>;Schema所定義的局部復雜類型<xscomplexType>
<xssequence>;Schema所定義的復雜類型中定義的局部元素<xselement name=″tel″type=″xsstring″/>
<xselement name=″postcode″type=″xsstring″/>
<xselement name=″street″type=″xsstring″/>
</xssequence>
</xscomplexType>
</xselement></xsschema>
首先,建立數(shù)據(jù)庫系統(tǒng)表文檔實例表(docInstance)、文檔集合表(collection)、復雜類型表(complexType)、模式表(schema)、模式引用關系表(schemacrossref)和全局元素表(docRoot)。
Schemacrossref,用于存放可擴展標記語言文件模式間的依賴關系,包括字段名稱空間(namespace)和名稱空間引用(refednamespace);Schema,用于存放可擴展標記語言文件模式與其對應的映射文件的對應關系,包括字段名稱空間(namespace)、名字(name)、模式內容(text)和映射文件名(mapping);DocInstance,用于存放可擴展標記語言文件存儲標識,包括字段文檔實例標識(id)、名字(name)、文檔集合表外鍵(collectionId(FK))和文檔原始內容(text);complexType,用于記錄數(shù)據(jù)庫導入的模式所生成的數(shù)據(jù)庫表(id為生成的表名),包括字段復雜類型標識(id)、名字(name)、名稱空間表外鍵(namespace(FK))和類型(type);docRoot,用于保存數(shù)據(jù)庫導入的模式所定義的全局元素,包括字段全局元素標識(id)、名字(name)和名稱空間(namespace(FK));Collection,用于存放一類xml文件的集合,包括字段文件標識(id)、名字(name)和全局元素表外鍵(docrootid(FK))。
然后,使用通用的解析器將schema作為普通的xml文件進行解析,分析其中的xsimport元素,將xml schema間的依賴(import)關系存入數(shù)據(jù)庫系統(tǒng)表Schemacrossref中。在導入某個具體的模式時,由于其可能依賴其它的模式,如果這些依賴的模式沒有導入到schemacrossref中,則將其一并導入。
如圖3所示,上述四個模式的依賴關系為company.xsd和government.xsd均依賴personal.xsd,personal.xsd依賴address.xsd。
導入government.xsd后表Schemacrossref的存儲結果為

然后導入company.xsd后表Schemacrossref的存儲結果為


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

下面描述模式三personal.xsd生成映射文件mapping-personal.xml的過程。
在該過程之前先采用下述方法對personal.xsd中的類型和元素進行命名將全局元素命名為“{element}{+目標名稱空間+}+元素的名稱屬性值”;將全局復雜類型命名為“{type}{+目標名稱空間+}+復雜類型的名稱屬性值”;將局部元素命名為“包含該局部元素的復雜類型的全局名字+“/”+該局部元素的名稱屬性值”;將局部復雜類型命名為該局部復雜類型的父元素的全局名字;將簡單類型命名為其基礎類型的全局名字。
故該模式定義的所有全局元素及其全局名字如下personnel{element}{http://org.xmldb.personnel}personelperson{element}{http://org.xmldb.personnel}personname{element}{http://org.xmldb.personnel}namefamily{element}{http://org.xmldb.personnel}familygiven{element}{http://org.xmldb.personnel}givenemail{element}{http://org.xmldb.personnel}emailurl{element}{http://org.xmldb.personnel}url五個復雜類型的全局名字為{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局部簡單類型的全局名字為{type}{http://www.w3.org/2001/XMLSchema}String該模式的元素和類型有了全局名字后,即能夠區(qū)分不同的類型和元素,映射文件mapping-personal.xml的過程如下獲取personal.xsd中的全部全局元素和復雜類型。
所獲得的全局元素為personnel,person,name,family,given,email,url所獲得的復雜類型為{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然后對每一個全局元素生成一個XmlMappingElement節(jié)點并設置其相應的屬性。再生成XmlMappingElements節(jié)點,該節(jié)點包含所有生成的XmlMappingElement節(jié)點。本例為;xml元素集合節(jié)點<XmlMappingElements>;全局元素person<XmlMappingElementname=″{element}{http://org.xmldb.personnel}person″localName=″person″elementType=″complex″type=″{element}{http://org.xmldb.personnel}person″id=″F8522164_DC8A_498E_888E_D7ACF6291D39″/>;全局元素personnel<XmlMappingElementname=″{element}{http://org.xmldb.personnel}personnel″localName=″personnel″elementType=″complex″type=″{element}{http://org.xmldb.personnel}personnel″id=″DB1D8AEA_A320_4203_BC3F_B2FE7D4AE326″/>;全局元素url<XmlMappingElementname=″{element}{http://org.xmldb.personnel}url″localName=″url″elementType=″complex″type=″{element}{http://org.xmldb.personnel}url″id=″2E1E9830_AB88_4DC8_8B72_A3DE735CA329″/>;全局元素family<XmlMappingElementname=″{element}{http://org.xmldb.personnel}family″localName=″family″elementType=″simple″type=″{type}{http://www.w3.org/2001/XMLSchema}string″id=″3DC9DBB9_9E7E_4CF4_BDA8_A0AF486E5364″/>;全局元素name<XmlMappingElementname=″{element}{http://org.xmldb.personnel}name″localName=″name″elementType=″complex″type=″{element}{http://org.xmldb.personnel}name″id=″5F8ECF2E_82E5_48E7_BD5D_C21FAC8CC297″/>;全局元素given<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″/>;全局元素email<XmlMappingElementname=″{element}{http://org.xmldb.personnel}email″localName=″email″elementType=″simple″type=″{type}{http://www.w3.org/2001/XMLSchema}string″id=″CAAAF143_2956_454D_8AF3_8E59F56BBA4E″/>
</XmlMappingElements>
最后將每一個復雜類型生成XmlMappingType節(jié)點并設置相應屬性,還要找出每一個復雜類型所包含的所有子元素(包括屬性)。對每一個子元素生成XmlMappingElement節(jié)點,并將其放入其所屬的復雜類型的XmlMappingType節(jié)點中。再生成XmlMappingTypes節(jié)點,該節(jié)點包含所有生成的XmlMappingType節(jié)點。
Personal.xsd生成的映射文件中XmlMappingTypes和XmlMappingType為;xml類型集合節(jié)點<XmlMappingTypes>;復雜類型{element}{http://org.xmldb.personnel}personnel<xmlMappingType id=″94737D4C_F969_48FF_A4A1_823FA8647BAD″name=″{element}{http://org.xmldb.personnel}personnel″namespace=″http://org.xmldb.personnel″>;子元素person<XmlMappingElementname=″{element}{http://org.xmldb.personnel}person″localName=″person″elementType=″complex″type=″{element}{http://org.xmldb.personnel}person″id=″F8522164_DC8A_498E_888E_D7ACF6291D39″/>
</XmlMappingType>;復雜類型{element}{http://org.xmldb.personnel}person<XmlMappingType id=″D62E1F94_35CA_4362_BB4E_DC39C58EACA3″name=″{element}{http://org.xmldb.personnel}person″namespace=″http://org.xmldb.personnel″>;子元素id<XmlMappingElement name=″id″localName=″id″elementType=″attribute″
type=″{type}{http://www.w3.org/2001/XMLSchema}ID″id=″81195F3E_ED21_44C6_A0D5_F4F0E44BC159″/>;子元素note<XmlMappingElement name=″note″localName=″note″elementType=″attribute″type=″{type}{http://www.w3.org/2001/XMLSchema}string″id=″7AA4C149_DB7A_4F75_91DF_B01EF4B5B40D″/>;子元素contr<XmlMappingElement name=″contr″localName=″contr″elementType=″attribute″type=″{type}{http://www.w3.org/2001/XMLSchema}string″id=″11C9845E_B1BF_4BFC_A1D0_CD6D89F50F41″/>;子元素salary<XmlMappingElement name=″salary″localName=″salary″elementType=″attribute″type=″{type}{http://www.w3.org/2001/XMLSchema}integer″id=″34009506_9DC1_4468_A654_E66BFFE49FCD″/>;子元素name<XmlMappingElementname=″{element}{http://org.xmldb.personnel}name″localName=″name″elementType=″complex″type=″{element}{http://org.xmldb.personel}name″id=″5F8ECF2E_82E5_48E7_BD5D_C21FAC8CC297″/>;子元素email<XmlMappingElementname=″{element}{http://org.xmldb.personnel}email″localName=″email″elementType=″simple″type=″{type}{http://www.w3.org/2001/XMLSchema}string″id=″CAAAF143_2956_454D_8AF3_8E59F56BBA4E″minOccurs=″0″maxOccurs=″100000″/>;子元素url<XmlMappingElementname=″{element}{http://org.xmldb.personnel}url″localName=″url″elementType=″complex″type=″{element}{http://org.xmldb.personnel}url″id=″2E1E9830_AB88_4DC8_8B72_A3DE735CA329″/>;子元素addresses<XmlMappingElementname=″{element}{http://org.xmldb.personnel}person/addresses″localName=″addresses″elementType=″complex″type=″{element}{http://org.xmldb.personnel}person/addresses″id=″1D2AA93A_0DEF_4924_A88F_C433515B20F6″/>
</XmlMappingType>;復雜類型{element}{http://org.xmldb.personnel}name<XmlMappingType id=″45E5901B_C36F_4F9E_8888_ADB29B816770″name=″{element}{http://org.xmldb.personnel}name″namespace=″http://org.xmldb.personnel″>;子元素family<XmlMappingElementnams=″{element}{http://org.xmldb.personnel}family″localName=″family″elementType=″simple″type=″{type}{http://www.w3.org/2001/XMLSchsma}string″id=″3DC9DBB9_9E7E_4CF4_BDA8_A0AF486E5364″minOccurs=″1″maxOccurs=″1″/>;子元素given<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″/>
</XmlMappingType>;復雜類型{element}{http://org.xmldb.personnel}url<XmlMappingType id=″22F2B421_815E_4E95_9D49_C67FA72D5265″name=″{element}{http://org.xmldb.personnel}url″namespace=″http://org.xmldb.personnel″>;子元素href<XmlMappingElement name=″href″localName=″href″elementType=″attribute″type=″{type}{http://www.w3.org/2001/XMLSchema}string″id=″5ACA5FFB_8E8A_4E9A_A17F_86FFCD1EE1E</XmlMappingType>;復雜類型{element}{http://org.xmldb.personnel}person/addresses<XmlMappingType id=″3E043791_8941_471A_A95D_A3DC796BBD5C″name=″{element}{http://org.xmldb.personnel}person/addresses″namespace=″http://org.xmldb.personnel″>;子元素address<XmlMappingElementname=″{element}{http://org.xmldb.address}address″localName=″address″elementType=″complex″type=″{element}{http://org.xmldb.address}address″id=″35CEl14E_D191_4534_A321_9BA88F9CB0BF″/>
</XmlMappingType>
</XmlMappingTypes>
同理,address.xsd生成的映射文件mapping-address.xml為<XmlMapping>
<XmlMappingTypes>
<XmlMappingType id=″35CE114E_D191_4534_A321_9BA88F9CB0BF″name=″{element}{http://org.xmldb.address}address″namespace=″http://org.xmldb.address″>
<XmlMappingElement name=″{element}{http://org.xmldb.address}address/tel″localName=″tel″elementType=″simple″type=″{type}{http://www.w3.org/2001/XMLSchema}string″
id=″212928B8_D160_4134_B8F3_C506103FFB82″minOccurs=″1″maxOccurs=″1″/>
<XmlMappingElement name=″{elemsnt}{http://org.xmldb.address}address/postcode″localName=″postcode″elementType=″simple″type=″{type}{http://www.w3.org/2001/XMLSchema}string″id=″46BFC031_7FA7_48ED_A73E_E82184BB67B5″minOccurs=″1″maxOccurs=″1″/>
<xmlMappingElement name=″{element}{http://org.xmldb.address}address/street″localName=″street″elementType=″simple″type=″{type}{http://www.w3.org/2001/XMLSchema}string″id=″AD2EEE92_A353_4127_AEC1_84B5851F1E98″minOccurs=″1″maxOccurs=″1″/>
</XmlMappingType>
</XmlMappingTypes>
<XmlMappingElements>
<XmlMappingElement name=″{element}{http://org.xmldb.address}address″localName=″address″elementType=″complex″type=″{element}{http://org.xmldb.address}address″id=″0430D375_32FE_4072_B254_C71C664456B3″/>
</XmlMappingElements></XmlMapping>
下面根據(jù)映射文件mapping-personal.xml生成關系數(shù)據(jù)庫表。
首先對于mapping-personal.xml中的每一個XmlMappingType生成一張表,為了使表名唯一,本例采用XmlMappingType中的id作為該表的表名;其次將XmlMappingType所包含的所有屬性和出現(xiàn)小于等于一次的簡單類型元素作為該表的字段;再者對于出現(xiàn)不止一次的簡單類型元素生成一張子表,其表名為XmlMappingElement的id;最后,對所有生成的表都建立公共字段uuid_id,uuid_name,uuid_docid,uuid_parented,uuid_order。
注對于一個復雜類型元素只生成一張表,不管該復雜類型是由哪個xmlschema所引用。這樣使生成的表不依賴于引用復雜類型的xml schema,而只依賴于定義該復雜類型元素的xml schema。因而使所有相同類型的元素都會存儲在一起。
對于mapping-personal.xml中有五個XmlMappingType元素,同時簡單類型元素{element}{http://org.xmldb.personnel}email的最大出現(xiàn)次數(shù)大于1,故應生成六張表,將生成表的情況存放在數(shù)據(jù)庫系統(tǒng)表complextype中為


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

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

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

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

法快速診斷盒檢測孔中,5min后開始觀察結果,20min觀察終止。結果報告出現(xiàn)1條紅色(質控)沉淀線,為鼠疫耶爾森氏菌血清學診斷陰性,即無鼠疫耶爾森氏菌感染;出現(xiàn)2條紅色(質控和對照)沉淀線,為鼠疫耶爾森氏菌血清學診斷陽性,即有鼠疫耶爾森氏菌感染。
2.2、鼠疫間接血凝法測定藥盒檢測臨床血清標本為常量法血凝試驗,按試劑盒說明書操作。
取血凝用小試管或反應板,按序加入稀釋劑,第1管0.9ml,第2管以下各加0.5ml至最終管。將被檢血清經56℃ 30min滅活后,取0.1ml加入第1管(1∶10稀釋)混勻后,取0.5ml移入第2管,以下依次類推,做2倍連續(xù)稀釋至終管,終管棄去0.5ml。每管分別加入2.5%F1抗原致敏血球懸液1滴(約0.05ml)。同時設陰性對照稀釋的被檢血清0.5ml加2.5%陰性血球1滴;陽性對照稀釋的陽性參考血清加入2.5%F1抗原致敏血球懸液1滴;空白對照稀釋劑0.5ml加2.5%F1抗原致敏血球懸液1滴。
將上述各管充分搖勻后,置于37℃或室溫中3-4h,待血球沉淀后,觀察結果(++++)凝集緊密,凝集物布滿管底,有卷邊現(xiàn)象或抗體過多則凝集疏散花團狀;(+++)凝集較緊密,凝集物布滿管底呈傘狀,無卷邊;(++)血球不完全凝集,管底呈整齊的圓圈,圈內外有明顯血球凝集;(+)血球沉積管底呈紐扣狀,周圍有極少量凝集血球;(-)血球無凝集沉積管底,呈整齊的圓圈或圓點狀。
2.3、結果與討論鼠疫膠體金法快速診斷免疫層析試紙與間接血凝法實驗室比較結果如下

靈敏度=[A/(A+C)]×100%=[294/(294+6)]×100%=98%特異性=[D/(B+D)]×100%=[300/(0+300)]×100%=100%
下面以實例personal.xml為例來描述將元素值存入關系數(shù)據(jù)庫表的過程。
實例Personal.xml為<?xml version=″1.0″encoding=″UTF-8″?>;名稱空間為http://org.xmldb.personnel<personnel xmlns=http://org.xmldb.personnel xmlnsxsi=″http://www.w3.org/2001/XMLSchema-instance″xsischemaLocation=″http://org.xmldb.personnel personal.xsd″xmlnsaddr=″http://org.xmldb.address″><person id=″idl″salary=″500″>
<name>
<family>張</family>
<given>三</given>
</name>
<email>a@a.com</email>
<addresses>
<addraddress>
<addrtel>1234567</addrtel>
<addrpostcode>100005</addrpostcode>
<addrstreet>科學院</addrstreet>
</addraddress>
</addresses></person><person id=″id2″salary=″500″>
<name>
<family>李</family>
<given>四</given>
</name>
<email>b@b.com</email>
<email>c@c.com</email>
<addresses>
<addraddress>
<addrtel>789898</addrtel>
<addrpostcode>100006</addrpostcode>
<addrstreet>北京大學</addrstreet>
</addraddress>
</addresses></person></personnel>
首先,解析可擴展標記語言文件以獲得文檔對象模型(dom樹);其次,遞歸處理dom樹的各層節(jié)點及節(jié)點的屬性,并對每一個節(jié)點重復下述過程利用mapping文件找到該節(jié)點的“elementType”和“type”,若elementType為簡單類型(simple)且出現(xiàn)次數(shù)小于等于一,將該節(jié)點值插入父節(jié)點表中的對應字段,若elementType為簡單類型(simple)且出現(xiàn)次數(shù)不止一次,將節(jié)點值插入該節(jié)點對應的表中;若elementType為復雜類型(complex),將節(jié)點值插入該節(jié)點的復雜類型元素所對應的表中,同時分析節(jié)點的屬性,將所有屬性值插入表中對應字段。
將符合personal.xsd定義的xml實例文檔personal.xml存儲在關系數(shù)據(jù)庫表中的結果為(為方便起見,在本文中將公共字段的“AB8E7A48_544A_48E3_8E4C_81268F986E10”省略,只保留“_”,同時由于所有此文檔相關記錄的字段“AB8E7A48_544A_48E3_8E4C_81268F986E10_INSTANCEID”值相同,這里不予列出)
表94737D4C_F969_48FF_A4A1_823FA8647BAD({element}{http://org.xmidb.personnel}personnel)存儲結果為

表D62E1F94_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)的存儲結果為

由于“personal.xsd”中引入了schema“address.xsd”,所以“personal.xml”文檔中元素“addraddress”的信息會插入導入“address.xsd”時所創(chuàng)建的“{element}{http://org.xmldb.address}address”表35CE114E_D191_4534_A321_9BA88F9CB0BF中,其結果如下

下面以查詢模式“address.xsd”定義的xml元素address為例來詳述本發(fā)明可擴展標記語言文件檢索方法的技術方案。
如圖1所示,可擴展標記語言文件檢索方法,用于對存儲在關系數(shù)據(jù)庫表中的可擴展標記語言文件進行檢索,關系數(shù)據(jù)庫系統(tǒng)表中存放系統(tǒng)信息,關系數(shù)據(jù)庫表中存放可擴展標記語言文件元素,關系數(shù)據(jù)庫系統(tǒng)表之模式表中存放名稱空間與其對應的映射文件,包括下述步驟1)通過待檢索元素的全局名字以獲取該元素的名稱空間(namespace),所述全局名字中有一部分用于表示名稱空間,也即全局名字的第二個{}中的內容;2)通過名稱空間以獲取可擴展標記語言文件的映射文件,即通過模式表(schema)即可得到映射文件;3)通過映射文件找到待檢索元素及其子元素的類型(type),從而獲取與其相應的所有關系數(shù)據(jù)庫表;4)通過關系數(shù)據(jù)庫表中取得待檢索元素。
如圖2所示,所述步驟4)又進一步細分為下述步驟40)從關系數(shù)據(jù)庫表中選出所有符合條件的記錄,并根據(jù)映射文件構造可擴展標記語言元素節(jié)點;41)將符合條件的多個元素匯集成一個結果集返回。
首先,由于全局元素address的全局名字為{element}{http://org.xmldb.address}address讀取該全局名字的第二個{}中的內容獲得元素address的名稱空間為http://org.xmldb.address根據(jù)此名稱空間查詢關系數(shù)據(jù)庫系統(tǒng)表“schema”中的記錄,找出該namespace的映射文件mapping-address.xml。<XmlMapping>
<XmlMappingTypes>
<XmlMappingType id=″35CE114E_D191_4534_A321_9BA88F9CB0BF″name=″{element}{http://org.xmldb.address}address″namespace=″http://org.xmldb.address″>
<XmlMappingElement name=″{element}{http://org.xmldb.address}address/tel″localName=″tel″elementType=″simple″type=″{type}{http://www.w3.org/2001/XMLSchema}string″id=″212928B8_D160_4134_B8F3_C506103FFB82″minOccurs=″1″maxOccurs=″1″/>
<XmlMappingElement name=″{element}{http://org.xmldb.address}address/postcode″localName=″postcode″elementType=″simple″type=″{type}{http://www.w3.org/2001/XMLSchema}string″id=″46BFC031_7FA7_48ED_A73E_E82184BB67B5″minOccurs=″1″maxOccurs=″1″/>
<XmlMappingElement name=″{element}{http://org.xmldb.address}address/street″localName=″street″elementType=″simple″type=″{type}{http://www.w3.org/2001/XMLSchema}string″id=″AD2EEE92_A353_4127_AEC1_84B5851F1E98″
minOccurs=″1″maxOccurs=″1″/>
</XmlMappingType>
</XmlMappingTypes>;全局名字為{element}{http://org.xmldb.address}address的節(jié)點<XmlMappingElements>
<XmlMappingElement name=″{element}{http://org.xmldb.address}address″localName=″address″elementType=″complex″type=″{element}{http://org.xmldb.address}address″id=″0430D375_32FE_4072_B254_C71C664456B3″/>
</XmlMappingElements></XmlMapping>
首先,在該映射文件中查找全局名字為{element}{http://org.xmldb.address}address的XmlMappingElement節(jié)點,讀取XmlMappingElement節(jié)點的type屬性值為{element}{http://org.xmldb.address}address;其次,根據(jù)type屬性值找到mapping中相應的XmlMappingType節(jié)點,即為該address元素的類型,讀取XmlMappingType節(jié)點的id屬性值為35CE114E_D191_4534_A321_9BA88F9CB0BF,此屬性值為存儲XML元素address的數(shù)據(jù)庫表名;然后,讀取數(shù)據(jù)庫表35CE114E_D191_4534_A321_9BA88F9CB0BF的記錄如下

根據(jù)該映射文件的XmlMappingType節(jié)點信息,可知address節(jié)點包含3個子節(jié)點tel、postcode、street,分別對應數(shù)據(jù)庫表中的三個字段,讀取相應字段值使用DOM解析器構造address的子節(jié)點,例如表中第一條記錄構造的結果為<ns1tel>1234567</ns1tel>
<ns1postcode>100005</ns1postcode>
<ns1street>科學院</ns1street>
然后再構造address元素節(jié)點,表中第一條記錄構造的結果為<ns1address>
<ns1tel>1234567</ns1tel>
<ns1postcode>100005</ns1postcode>
<ns1street>科學院</ns1street>
</ns1address>
最后將符合條件(如果要查詢postcode大于100007的address,表中的兩條記錄都符合查詢要求)的記錄所生成的所有address元素節(jié)點放入DOM解析器構造的父元素節(jié)點<resultset></resultset>中,并將DOM樹序列化成字符串,將查詢結果作為一個大的結果集返回,結果如下<resultset xmlnsns1=″http://org.xmldb.address″>
<ns1address>
<ns1tel>1234567</ns1tel>
<ns1postcode>100005</ns1postcode>
<ns1street>科學院</ns1street>
</ns1address>
<ns1address>
<ns1tel>789898</ns1tel>
<ns1postcode>100006</ns1postcode>
<ns1street>北京大學</ns1street>
</ns1address></resultset>
以上所述僅是本發(fā)明可擴展標記語言文件檢索方法的優(yōu)選實施方式,應當指出,對于本技術領域的普通技術人員來說,在不脫離本發(fā)明可擴展標記語言文件檢索方法原理的前提下,還可以作出若干改進和潤飾,這些改進和潤飾也應視為本發(fā)明可擴展標記語言文件檢索方法的保護范圍。
權利要求
1.一種可擴展標記語言文件檢索方法,用于對存儲在關系數(shù)據(jù)庫表中的可擴展標記語言文件進行檢索,關系數(shù)據(jù)庫系統(tǒng)表中存放系統(tǒng)信息,關系數(shù)據(jù)庫表中存放可擴展標記語言文件元素,關系數(shù)據(jù)庫系統(tǒng)表之模式表中存放名稱空間與其對應的映射文件,其特征在于,包括下述步驟1)通過待檢索元素的全局名字以獲取該元素的名稱空間,所述全局名字中有一部分用于表示名稱空間;2)通過名稱空間以獲取可擴展標記語言文件的映射文件;3)通過映射文件找到待檢索元素及其子元素的類型,從而獲取與其相應的所有關系數(shù)據(jù)庫表;4)通過關系數(shù)據(jù)庫表中取得待檢索元素。
2.如權利要求1所述的可擴展標記語言文件檢索方法,其特征在于,所述步驟4)又進一步細分為下述步驟40)從關系數(shù)據(jù)庫表中選出所有符合條件的記錄,并根據(jù)映射文件構造可擴展標記語言元素節(jié)點;41)將符合條件的多個元素匯集成一個結果集返回。
全文摘要
本發(fā)明公開了一種可擴展標記語言文件檢索方法,包括步驟通過待檢索元素的全局名字以獲取該元素的名稱空間;通過名稱空間以獲取可擴展標記語言文件的映射文件;通過映射文件找到待檢索元素及其子元素的類型,從而獲取與其相應的所有數(shù)據(jù)庫表。采用本發(fā)明可擴展標記語言文件檢索方法能夠實現(xiàn)對存儲在關系數(shù)據(jù)庫表中的可擴展標記語言文件元素高效檢索。
文檔編號G06F17/30GK1632797SQ20041010275
公開日2005年6月29日 申請日期2004年12月27日 優(yōu)先權日2004年12月27日
發(fā)明者李安渝, 嚴兵, 傅朝霞, 秦良娟, 丁蔚, 耿建光, 秦懷平, 董勝濤 申請人:中國科學院軟件研究所, 神州數(shù)碼軟件有限公司
網友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
富民县| 屏边| 南陵县| 改则县| 南昌市| 常熟市| 巫溪县| 关岭| 江口县| 珠海市| 衡阳市| 保亭| 庆安县| 昭觉县| 土默特右旗| 公主岭市| 商洛市| 乾安县| 安陆市| 万安县| 大同市| 延吉市| 临沭县| 宜都市| 宣武区| 霸州市| 高雄市| 梨树县| 开远市| 郴州市| 乡城县| 宜州市| 景谷| 团风县| 惠水县| 崇明县| 万源市| 普兰店市| 萍乡市| 正宁县| 准格尔旗|