胡 球
[摘 要]XML中一種擴(kuò)展的標(biāo)記語言,它具有很好的擴(kuò)展性標(biāo)記。本文通過XML實(shí)現(xiàn)數(shù)據(jù)庫的定義,實(shí)現(xiàn)對XML數(shù)據(jù)庫的訪問和異構(gòu)數(shù)據(jù)庫之間的互訪。
[關(guān)鍵詞]XML異構(gòu)數(shù)據(jù)庫信息交換數(shù)據(jù)庫訪問
XML(ExtensibleMarkupLanguage)它是由W3C組織于1998年2月制定的一種通用語言規(guī)范,是SGML的簡化子集,專門為Web應(yīng)用程序而設(shè)計。XML作為一種可擴(kuò)展性標(biāo)記語言,其自描述性使其非常適用于不同應(yīng)用間的數(shù)據(jù)交換,而且這種交換是不以預(yù)先規(guī)定一組數(shù)據(jù)結(jié)構(gòu)定義為前提XML最大的優(yōu)點(diǎn)是它對數(shù)據(jù)描述和數(shù)據(jù)傳送能力,因此具備很強(qiáng)的開放性。為了使基于XML的業(yè)務(wù)數(shù)據(jù)交換成為可能,就必須實(shí)現(xiàn)數(shù)據(jù)庫的XML數(shù)據(jù)存取,并且將XML數(shù)據(jù)同應(yīng)用程序集成,進(jìn)而使之同現(xiàn)有的業(yè)務(wù)規(guī)則相結(jié)合開發(fā)基于XML的動態(tài)應(yīng)用,如動態(tài)信息發(fā)布、動態(tài)數(shù)據(jù)交換等,前提是必須有支持XML的數(shù)據(jù)庫支持。XML提供描述不同類型數(shù)據(jù)的標(biāo)準(zhǔn)格式。
一、XML與數(shù)據(jù)庫的結(jié)合
XML數(shù)據(jù)源有多種多樣,根據(jù)具體的應(yīng)用,大概可分為下面三種:一種是XML純文本文檔;第二種是關(guān)系型數(shù)據(jù)庫;第三種則來源于其他各種應(yīng)用數(shù)據(jù),如郵件、目錄清單、商務(wù)報告等。其中,第一種來源,即XML純文本文檔是最基本的也是最為簡單的,將數(shù)據(jù)存儲于文件中,其最大的優(yōu)點(diǎn)在于可以直接方便地讀取,或者加以樣式信息在瀏覽器中顯示,或者通過DOM接口編程同其他應(yīng)用相連。第二種數(shù)據(jù)來源是對第一種來源的擴(kuò)展,目的是便于開發(fā)各種動態(tài)應(yīng)用,其優(yōu)點(diǎn)則在于通過數(shù)據(jù)庫系統(tǒng)對數(shù)據(jù)進(jìn)行管理,然后在利用服務(wù)器端應(yīng)用。這種方式最適合于當(dāng)前最為流行的基于三層結(jié)構(gòu)的應(yīng)用開發(fā)。第三種數(shù)據(jù)由于來源廣泛,因此需要具體情況具體對待本文的分析主要針對前兩種數(shù)據(jù)來源進(jìn)行分析。
對于XML文檔,可以通過DOM(Docum ent Object Model)讀取XML文檔中的節(jié)點(diǎn),是最基本也是最底層的XML存取技術(shù)。DOM是W3C的一種技術(shù)標(biāo)準(zhǔn),實(shí)際上是提供一組API來存取XML數(shù)據(jù)。DOM可以通過JavaScript,VBScript等腳本程序來實(shí)現(xiàn),也可通過C++、Java等高級語言來實(shí)現(xiàn)。
其次,也可通過DSO(Data Source Obj ect)進(jìn)行XML的數(shù)據(jù)綁定可以方便地將XML節(jié)點(diǎn)同HTML標(biāo)記捆綁,從XML文檔中讀取或?qū)懭霐?shù)據(jù),就象訪問MicrosoftAccess或Micro soft SQLServer一樣;而HTTP+SQL是Microsoft新近提出的SOAP方案的核心,其基本原理是通過基于HTTP協(xié)議的URL方式直接訪問SQLSERVER數(shù)據(jù)庫,并返回以XML或HTML數(shù)據(jù)格式的文檔。
XML數(shù)據(jù)庫又分為兩種:一種是以XML原始格式存儲的數(shù)據(jù)庫我們稱為“native-XML數(shù)據(jù)庫”;另一種是以XML格式存入和導(dǎo)出,且它本身又是一個數(shù)據(jù)庫,我們稱為“XML-enabled數(shù)據(jù)庫”。
(一)1native-XML數(shù)據(jù)庫
對于native-XML數(shù)據(jù)庫的訪問,我們可以通過XQL語言來完成。通過XQL我們可以對一個或多個XML文件進(jìn)行查詢,它返回一個封裝在根元素(sql:result)的節(jié)點(diǎn)集,這個節(jié)點(diǎn)集也是一個XML文件。
(二)2XML-enabled數(shù)據(jù)庫
因?yàn)閿?shù)據(jù)是以XML格式存入和導(dǎo)出,且它本身又是一個數(shù)據(jù)庫,這就涉及到異構(gòu)數(shù)據(jù)庫間的互訪問題。XML提供了一種連接關(guān)系數(shù)據(jù)庫和面向?qū)ο髷?shù)據(jù)庫以及其他數(shù)據(jù)庫系統(tǒng)之間的訪問技術(shù),也就是說我們可以先對關(guān)系數(shù)據(jù)庫和面向?qū)ο髷?shù)據(jù)庫以及其他數(shù)據(jù)庫系統(tǒng)進(jìn)行訪問,然后生成XML文件,再將文件存入數(shù)據(jù)庫或作其他處理。
二、使用JSP連接數(shù)據(jù)庫并進(jìn)行查詢生成XML文檔
我們有許多方法可做到連接數(shù)據(jù)庫并進(jìn)行查詢,生成XML文檔。以下是通過JSP技術(shù)對SQLServer存儲的XML文檔進(jìn)行查尋并提取這些文檔,然后將其傳送給用戶。Java語言應(yīng)用程序的開發(fā)者提供了一個通用的SQL數(shù)據(jù)庫訪問和存儲結(jié)構(gòu),即JDBC,它是一種用于數(shù)據(jù)庫訪問的應(yīng)用程序編程接口(API),開發(fā)者可以通過JDBC產(chǎn)品組件之一JDBC-ODBC橋來完成與數(shù)據(jù)庫建立連接、發(fā)送語句、處理結(jié)果等工作。我們可以用一個簡單的例子來說明如何在用JDBC接口來實(shí)現(xiàn)數(shù)據(jù)庫的連接,執(zhí)行一個查詢(其結(jié)果為一組XML文檔),分析查詢結(jié)果,并將分析過的數(shù)據(jù)寫入輸出流中。
三、XML模式與關(guān)系模式的相互轉(zhuǎn)換
為了完成異構(gòu)數(shù)據(jù)庫間的通訊,必須實(shí)現(xiàn)RDMS→XML→RDMS的轉(zhuǎn)換。一個具體的XML模式到關(guān)系模式的數(shù)據(jù)轉(zhuǎn)換需要涉及較為復(fù)雜的XML格式分析處理及相應(yīng)的數(shù)據(jù)庫操作及有效性校驗(yàn)。我們通過對XML的數(shù)據(jù)模型與關(guān)系模型的特征的比較,認(rèn)為兩者轉(zhuǎn)換的實(shí)質(zhì)是(1)從XML中的數(shù)據(jù)(存在方式可以是Content、屬性值、元素名等)到關(guān)系模式中字段的映射;(2)從XML中數(shù)據(jù)的相互位置關(guān)系到關(guān)系模式中元組與元組的關(guān)系及元組與字段的關(guān)系的映射,從XML模式到關(guān)系模式轉(zhuǎn)換的轉(zhuǎn)換規(guī)則腳本:由關(guān)系模式的定義和XML模式到關(guān)系模式轉(zhuǎn)換規(guī)則的定義組成;從關(guān)系模式到XML模式轉(zhuǎn)換的轉(zhuǎn)換規(guī)則腳本:由關(guān)系模式的定義和關(guān)系模式到XML模式轉(zhuǎn)換規(guī)則的定義組成。
(一)XML模式到關(guān)系模式轉(zhuǎn)換
1.關(guān)系模式定義:
一個關(guān)系模式的定義分兩部分:數(shù)據(jù)源(DataSource)定義和實(shí)體(包括關(guān)系實(shí)體)的定義。數(shù)據(jù)源的定義不外乎ODBC/JDBC/BDE 等幾種,定義它的目的在于轉(zhuǎn)換程序的跨平臺的通用性。實(shí)體定義包含兩部分:結(jié)構(gòu)定義和約束定義。結(jié)構(gòu)定義類似關(guān)系數(shù)據(jù)庫的表定義,包含對每個字段的類型、長度等的定義。約束定義則主要包含對字段的外鍵和引用的約束定義。
2.XML模式到關(guān)系模式轉(zhuǎn)換規(guī)則的定義:
XML模式到關(guān)系模式的轉(zhuǎn)換的目標(biāo),是將某一種XMLSchema定義好的XML文檔中的Content部分、屬性值部分轉(zhuǎn)換成關(guān)系模式中的某個元組的某個字段的值,而將他們之間的位置關(guān)系轉(zhuǎn)換成關(guān)系模式中的外鍵等應(yīng)用關(guān)系。
四、結(jié)束語
目前數(shù)據(jù)庫已不再僅僅局限于存儲數(shù)據(jù),而是向著更深層次、更多樣化發(fā)展,它已經(jīng)廣泛運(yùn)用于OLAP、OLTP、數(shù)據(jù)倉庫、數(shù)據(jù)挖掘、移動計算、嵌入式計算和Web應(yīng)用等諸多方面?,F(xiàn)在,數(shù)據(jù)庫技術(shù)也已經(jīng)深入到各行各業(yè),尤其在媒體、金融、交通、商業(yè)等領(lǐng)域得到了廣泛應(yīng)用。我們有理由相信,XML同數(shù)據(jù)庫的相結(jié)合將隨著XML技術(shù)的發(fā)展,會實(shí)現(xiàn)更強(qiáng)大的功能。
參考文獻(xiàn)
[1]http://www.xmlsoftware.com/
[2]楊鈺,盧銀娟,趙昊彤等,JSP網(wǎng)絡(luò)開發(fā)技術(shù)。人民郵電出版社
[4]http://www.microsoft.com/xml/xsl/msxsl-f.htm
[5]http://www.51xml.com/forum/search_foru m_xml.Xml
[6]MichaelMorrison,etal。XML揭秘---入門-應(yīng)用-精通。清華大學(xué)出版社,2000,8