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