整合 XML 文件於 CORBA 架構之封裝實作
黃俊典、廖宜恩 國立中興大學應用數學系 台中市國光路 250 號 TEL:(04)2860133-621 E_mail:{jdhuang,ieliao}@amath.nchu.edu.tw 摘要 隨著分散式系統及物件導向技術的發展, 以物件為基礎的分散式架構也受到高度重視,因 此 OMG 在 1990 年就制定了一個分散式物件溝通 的標準-CORBA(Common Object Request Broker Architecture),這是目前最受業界支持的分散式物 件 架 構 標 準 之 一 。 HTML ( Hypertext Markup Language)讓網際網路在極短的時間內大為盛 行,因此也讓人們想在網際網路上做更複雜的應 用,如電子商務等,但受限於 HTML 本身的特性 並 無 法 配 合 這 樣 的 應 用 , 於 是 有 了 XML (Extensible Markup Language)的出現,用以取代 HTML,以符合這些複雜應用的需求。在 本 篇 論 文 中 , 我 們 完 成 了 一 個 CORBA/XML Wrapper,將 XML Documents 包裝 成 CORBA 的 Server Object,讓 Client 可以透過 呼叫 Server Object 提供的 method 存取到 XML 文件中的資料,且在前端提供一個 QBE_Like 介 面讓使用者查詢 XML 文件內容;並配合 XML 本身的特性,建立了一個將本系統應用在電子商 務上的工作流程,以達到比較購物的功用。 關鍵字:CORBA、XML、DOM、Wrapper、 電子商務。
1. 研究動機
現在的網際網路就如同一個超大型的虛擬 圖書館一般,提供大量的資料或資訊給使用者 (client),使用者再依其需求,進一步處理所擷 取之資料,這種運作模式可稱之為資訊導向網際 網路(Information-based Internet)。未來的運作 模式應朝向以服務導向網際網路(Service-based Internet)的方向發展,也就是進一步提昇層次, 提供各式各樣的服務,所謂的服務是將資料的運 算處理邏輯由應用伺服器(Application Server) 處理後再提供給使用者。因此網際網路的架構會 由二層式(Two-Tier)發展成三層式或多層式的 架構。 網際網路有許多不同型態的資料來源,如關 聯式資料庫,物件導向資料庫,XML(Extensible Markup Language)[9] 文件 、 HTML( HyperText Markup Language)文件、Text 文件等,其中 XML 是較新的資料格式且在未來的網際網路資料交 換上將扮演極重要的角色,可預期的 XML 文件的 應用將會越來越廣泛。 因為網路上的資料數量非常驚人,因此各式 各樣的搜尋、查詢工具被發展出來協助使用者找 到它們想要的資料,其中在查詢介面方面,如果 可以提供使用者一個共通且具親和力的查詢方 式,來查詢後端許多資料來源,如 XML 文件、 關聯式資料庫、物件導向資料庫等的資料,對使 用者是很方便的事。 三層式或多層式架構有多種實作方式可以採 用 , 其 中 有 一 種 是 利 用 由 OMG ( Object Management Group)所制定的 CORBA(Common Object Request Broker Architecture)[1]作為系統的 通訊基礎架構(Communication infrastructure),其中的應用伺服器是由許多的 CORBA Server Objects 所組成。本論文即是研究如何將各種異質 性資料整合到 CORBA 的分散式物件架構上。如 圖 1.1,利用 Wrappers(轉換器)[12]將各種資料 做 轉 換 , 讓 使 用 者 可 以 使 用 一 致 的 介 面 向 CORBA Server 要求,CORBA Server 就會自動 使用適當的 Wrapper 向後端的資料來源存取資 料及做適當處理,本論文將處理圖 1.1 架構中 XML Documents 部分的整合,提供 client 一個一 致性的介面進行對 XML Documents 的查詢,並 試著將系統配合 XML 的特性應用到電子商務 中,本系統提供了電子商務中一個很重要的比較 購物(Comparison-shopping)功能,讓使用者在 許多的網路商店中快速地找出銷售所需商品的 最便宜商店。 圖 1.1 CORBA 環境整合異質性資料的架構
2. 相關研究
2.1 CORBACORBA(Common Object Request Broker Architecture)[1] 所 定 義 的 分 散 式 物 件 架 構 與 規 格,可讓不同廠商所發展出來的 ORB 物件元件 可 以 在 任 何 網 路 及 作 業 系 統 上 相 互 運 作 。 CORBA 之標準實現了分散式系統中重要的透通 性(transparency)要求,可以讓 CORBA 物件相 互引用時,不需要知道該物件實作方式和位置, 只要透過呼叫該物件用 IDL(Interface Definition Language)語言所定義出來的物件名稱和 method 名稱及輸出入參數形態即可,且由於 CORBA 物 件透過 IDL(Interface Definition Language)作為物 件介面的映對,可以用任何程式語言來撰寫。 2.2 XML
XML[9]是一種較新的資料格式,它的出現主 要是因為 HTML 不足以應付未來網際網路的複 雜 應 用 需 求 , 如 電 子 商 務 等 , 它 是 SGML ( Standard Generalized Markup Language ) 的 subset,去除掉 SGML 中不常用到及對網路應用 不利的部分,因此它繼承了 SGML 可以透過撰寫 DTD(Document Type Declaration)[9]來自訂 tag 的優點,且更適合網路應用的需求。它的應 用範圍可以從解決 HTML 不能擴充 tag 的問題, 到成為資料庫之間交換資料的方式,可預期的 XML 文件的應用將會越來越廣泛。
2.3 DOM
DOM(Document Object Model)[2]是由 W3C (World Wide Web Consortium)操作運用 XML 和 HTML 文件的標準 API 規格,就如同它的名 稱,它將 XML 文件當成物件來看待,定義了使 用物件的 methods。DOM 的規格設計工作被分成 許多階段來進行,Level 1 中所要做的是允許瀏覽 和維護 HTML、XML 文件的內容和結構。Level2 和未來的 Level 所要做的工作則包括:提供對文 件樣式的支援(一開始是 CSS(Cascading Style Sheets ) , 然 後 將 是 XSL(Extensible Stylesheet Language))、一個 event model、一個查詢介面 (interface)、一個 XML DTD 介面等,其中查詢介 面的查詢語言尚未決定。1998 年十月制定完 level1 的規格,未來還會繼續 level2 及後續 level 的標準,DOM 是我們未來運用 XML 文件時最重 要的工具之一。
3. 系統架構
3.1 系統簡介 系統的架構圖如圖 3.1,其中 1. ORB / IIOP: ORB ORB CORBA Client Netscape 4.0 CORBA Client C++/Java Internet OODB RDB CORBA/ OODB Wrapper XML Documents CORBA/ RDB Wrapper CORBA/ XML Documents WrapperCORBA Server NamingServer
HTTP ‧‧‧
‧‧
ORB
ORB 是 CORBA 的核心,本系統是採用 Visigenic 的 ORB。所謂的 ORB 通常並不是個獨 立的程式,而是一些程式庫及其他資源的集合, 用來處理 Server 物件及 Client 端的通訊。IIOP (Internet Inter-ORB Protocol)[1]是不同 ORB 間 溝通用的標準通訊協定。 2. Client Applet: 在 client Applet ,為了提供一個一致性的介 面 給 使 用 者 , 及 一 定 程 度 的 透 通 性 (transparency),我們希望使用者以查詢關聯式 資料庫的方式來查詢 XML 文件的資料,因此當 Applet 啟動執行之後,使用者跟關聯式資料庫一 樣,必需選擇所要查詢的資料庫和表格,當然 XML 文件並沒有所謂的資料庫,因此在這裡是 沒有作用的,我們用一個 XML database 代替,來 隱約表示查詢的是 XML 文件。 接著必需選擇要查詢的表格,在這裡實際上 選擇的是 XML DTD 的種類,目前我們只建立了 一個 car 的選項,代表汽車資料的 DTD,之後 Server object 會傳回 DTD 所有定義的元素和屬 性,將之傳回給 Applet,Applet 將之轉成一個 QBE_Like 的查詢輸入表格。 之後使用者可以針對每個元素或屬性輸入 查詢限制條件,可以使用的運算元(operator)包 含 ~ (表示 like)、<、<=、>、>=,並指定結果依 據那一個元素或屬性做排序,將之傳給 Server object 作處理,最後將 Server object 傳回來之查 詢結果以表格的型式顯示出來。
3. Sever object /Xml_thread :
這部分就是我們的 Wrapper,Server object 主要提供了兩個 method 給 client 呼叫,第一個 是傳回 XML DTD 的屬性(attributes);第二個 是接受查詢條件,分析查詢條件,並對每個 XML document 都 分 別 產 生 一 個 Xml_thread , Xml_thread 使用 HTTP 協定將放在不同機器上 的 XML 文件讀入,分別剖析(parse)和比對, 最後由 Server object 彙整排序,將結果傳回給 client。 而當系統中加入新的 DTD 時,必須加入相 對於該 DTD 的 Xml_thread 程式碼模組,以便當 使用者查詢到該 DTD 資料時,Server object 可以 呼 叫 這 些 Xml_thread 程 式 碼 , 產 生 相 對 的 Xml_threads。 必 須 解 釋 的 是 圖 中 的 XML 文 件 和 Xml_thread 的數目只有代表性的畫了兩個,但這 兩者當然都可以超過兩個以上,且 Xml_thread 的 數目會隨著 XML 文件的數目等量增加,動態的 在執行查詢動作時由 Server object 產生。 4. Directory Server: 負責管理 DTDs 和遵守各 DTD 所寫出來的 XML 文件的 URLs.
圖 3.1 系統架構 3.2 實作環境 整個論文的程式實作是在 SUN Sparc 4 中來 實作的,整個系統所使用的軟硬體如下: *主機 : SUN Sparc 4 *作業系統 : Sun Solaris 2.5
*CORBA 發展軟體 : Visigenic 的 VisiBroker 2.5 for JAVA 。。。 IIOP ORB Browser ORB Client Applet Server object Xml_thread Xml_thread XML XML HTTP Directory Application Server Data Storage
*Web Server : Apache Http Server 1.3
*WWW 瀏覽器 : Netscape Communicator 4.5 *JAVA 發展程式 : Sun JAVA Developerment
Kit 1.1.7 (JDK 1.1.7)
*XML library : Sun JAVA XML library-ea2
4. 系統實作
4.1 CORBA IDL 規劃
圖 4.1 中 analy.idl 這個 idl 檔的內容,定義 了 Server Object 所提供的 method,及呼叫這個 method 時需要提供的參數和傳回值型態,可以看 到在 query_database 這個 interface 中我們定義了 三個 method: connect_database:這個 method 是為了和關 聯式資料庫提供類似介面而定,以便未來能和關 聯式資料庫查詢部份做結合,在 XML 這部分並 沒有作用。 connect_table:這個 method 將使用者所選的 DTD 名稱傳回給 Server,Server 再將 DTD 中所 定義的 elements 以一為字串陣列的型式傳回給 client。 query_data:這個 method 將使用者輸入的查 詢條件和排序依據分別以一維字串陣列和整數 的形式傳回給 Server,Server 再將查詢後的結果 以一個二維字串陣列的形式傳回給 client。 4.2XML DTD 訂定和 XML 文件的處理 在實作中我們訂定了一個如圖 4.2 car.dtd 這 樣 一 個 DTD , 宣 告 每 一 部 車 必 需 包 含 COMPANY,TYPE,COLOR,YEAR,KILOMETER, PRICE,URL 等的資料,而每個依這個 DTD 所寫 出來的文件必需包含一到多部車的資料,如圖 4.3 便是一個依此 DTD 所寫出來的 XML 文件。 在 Xml_thread 處理 XML 文件時,我們會利 用 XML library 所提供的剖析器(parser)作剖 析,然後運用 DOM API 將剖析後的結果放在一 個二維字串陣列中。如圖 4.3 中的 car.xml 經過 處理後,將產生一個如下的二維字串陣列1 : 1 這樣的處理方式對某些 DTD 和 XML 文件可能會造 {{BENZ,260E,gray,1992,120000,690000, http://benz.nchu.edu.tw/~reset}, {Ford,mondeo,red,1997,70000,350000, http://www.amath.nchu.edu.tw/~peter}}。 圖 4.1 analy.idl 圖 4.2 cardata.dtd 圖 4.3 car.XML
4.3 Server Object 和 Xml_thread 的運作
Server Object 收到放在一維字串陣列中的 查詢條件後,便先剖析(parse)這些查詢條件, 並 依 據 XML 文 件 的 數 目 產 生 相 同 數 目 的 Xml_thread。 每個 Xml_thread 會分別去剖析這些 XML 成稀疏矩陣的情形,這是還可以在討論的地方。 module analy1{
typedef sequence<string> table_list; typedef sequence<string> attribute_list; typedef sequence<string> input_rule_list; typedef sequence<string> query_result_row; typedef sequence<query_result_row> query_result; interface query_database{
table_list connect_database(in long choose_database); attribute_list connect_table(in long choose_table); query_result query_data(in input_rule_list a_input_rule_list ,in long sort_by_number); };};
<!ELEMENT CARDATA (CAR+)>
<!ELEMENT CAR (COMPANY, TYPE, COLOR, YEAR, KILOMETER, PRICE,URL)>
<!ELEMENT COMPANY (#PCDATA)> <!ELEMENT TYPE (#PCDATA)> <!ELEMENT COLOR (#PCDATA)> <!ELEMENT YEAR (#PCDATA)> <!ELEMENT KILOMETER (#PCDATA)> <!ELEMENT PRICE (#PCDATA)> <!ELEMENT URL (#PCDATA)>
文件,然後將之和剖析後的查詢條件做比對,如 果 查 詢 比 對 符 合 的 就 將 之 放 在 一 個 所 有 Xml_thread 共同使用的二維陣列中。 最後 Server 會確認是否所有 Xml_thread 都 已經做完比對動作,如果還沒,先等待,如果都 做完了,就將這個二維陣列依據使用者所指定的 排序依據由小到大做排序,之後將這個二維陣列 丟回給 client。 4.4 應用實例 本系統的處理資料是 car.xml 及 car1.xml 兩 個 XML 文件檔,它們都是依 cardata.dtd(即 4.2 圖 4.2)所撰寫出來的 XML 文件,內容是汽車的資 料,兩個檔案內分別有 20 台和 15 台汽車的資 料,我們分別將它們放在 benz 和 oo 這兩台主 機上,並從位在 trout 這台主機上的 Server Object 利用 HTTP 協定讀進這兩個 XML 文件,這是我 們系統目前資料內容和 Server object 的位置配 置。
本系統運作是必須有五個程式被執行,他們 的執行順序依序如下:
1.Sever 端啟動 web Server 和 CORBA naming Server。
2.Sever 端啟動 Server object2。
3.Client 端啟動瀏覽器之後在輸入 Applet 所在 URL,啟動 Applet。 而本系統的 Client 和 Server 的溝通運作過 程依序為以下六個步驟: 1.前端在 Client(JAVA Applet)中選擇所要資料的 XML DTD type。
2.Server object(後端)把所要的 DTD 的 schema 傳 回 Client。
3.Client show 出一個 QBE_Like 的介面給使用者 輸入其查詢,(所支援的 operation 包括 = , ~ (代 表 like) , > ,>= ,< ,<= 六個)。 4.Client 將 查 詢 條 件 以 字 串 陣 列 的 形 式 傳 回 Server。 5.Server object 便去做查詢分析的工作,然後將結 果以二維陣列的形式傳回 Client。 6.Client 將結果以 table 的形式秀出來。 2 目前我們是使用手動啟動的模式,但其實在 visibroker 中有一支 oad 的程式,只有適當的使用此程 式,它就可以自動的在 Server object 被呼叫時,自動 的啟動 Server object,而不需事先手動啟動之。
<!DOCTYPE CARDATA SYSTEM "http://trout.amath.nchu.edu.tw/cardata.dtd"> <CARDATA> <CAR> <COMPANY>BENZ</COMPANY> <TYPE>260E</TYPE> <COLOR>gray</COLOR> <YEAR>1992</YEAR> <KILOMETER>120000</KILOMETER> <PRICE>690000</PRICE> <URL>http://benz.nchu.edu.tw/~reset</URL> </CAR> <CAR> <COMPANY>Ford</COMPANY> <TYPE>mondeo</TYPE> <COLOR>red</COLOR> <YEAR>1997</YEAR> <KILOMETER>70000</KILOMETER> <PRICE>350000</PRICE> <URL>http://www.amath.nchu.edu.tw/~peter</URL> </CAR> </CARDATA>
系統實際執行時的畫面,如下: 畫面一:Applet 剛啟動 可以看到畫面中有兩個下拉式選單,分別是 database 和 table;如前面系統簡介時所述,為了 提供一個一致性的介面給使用者,及一定程度的 透通性(transparency),我們希望使用者以查詢 關聯式資料庫的方式來查詢 XML 文件的資料, 因此當 Applet 啟動執行之後,使用者跟關聯式資 料庫一樣,必需選擇所要查詢的 database 和 table,當然 XML 文件並沒有所謂的 database,因 此 在 這 裡 是 沒 有 作 用 的 , 我 們 用 一 個 XML database 代替,來隱約表示查詢的是 XML 文件, 而 table 是選擇要查詢的表格,在這裡實際 上選擇的是 XML DTD 的種類,目前我們只建立 了一個 Car 的選項,代表汽車資料的 DTD,之後 Server object 會傳回 DTD 所有定義的元素和屬 性,將之傳回給 Applet,Applet 將之轉成一個 QBE_Like 的表格。 畫面二:輸入查詢條件 用下拉式選單3,選擇了 XML 這個 database 及 car 這個 table,表示要查詢 car 資料;接著就 會出現 QBE_Like 的查詢介面,打入查詢條件 後,如下面圖中的例子,我們選擇要找廠牌是名 3 這裡使用下拉式選單的理由是使用者用選單的方式 來選擇是很方便且直覺的,在資料量不多時是很好的 選擇,但如果未來資料種類的量較多時,選單的方式 可能就未必適用,到時可能要由使用者用輸入的方式 來選擇,因為使用者可能不知道我們定義 DTD 時所 使用的字彙,因此在系統的目錄管理程式中就必需多 一個同義字比對的功能[11]. 字中有個 H 字母的廠牌、顏色是紅色、且年份是 1993 年以後的汽車,並要求結果要依價格排序; 之後如果要修改查詢條件,可以一個個欄位做修 正,或按下下方的”clear”按鈕,將全部的查詢條 件都清除,重新輸入;如果沒問題,就可以按下 下方”submit”按鈕,真正將查詢條件送給 Server object,進行查詢分析動作。 畫面三:顯示查詢結果 顯示剛才查詢的結果,以表格的形式顯示出 來,且檢視結果也確實符合我們輸入的查詢條 件,並且可以發現確實是依價格排序,可以達到 比較購物的效果,讓我們找到符合我們條件而價 格最便宜的汽車;如果要再次查詢,只要按下下 方的 “return to query interface”按鈕,就可以繼續 輸入查詢的動作。
5. 電子商務之應用
讓我們來了解一下未來電子商務中,資料是 以何種形式被儲存和轉換,在平常大型企業和電 子商店還是會和現在一樣把大多數資料存放在 資料庫中,等到資料需要交換或轉換成各種格式 時,會將資料轉換成中間形式的 XML 文件,之 後 如 果是 要呈 現在 瀏覽器 時 ,可 能再 轉換 成 HTML 或用 XML+XSL 的形式呈現在網頁上,或 者是轉成其他格式的文件。 因此就單一電子商店而言,使用 DOM API 撰寫 Xml_thread 處理電子商店中所有 XML 文 件,必然是電子商店本身的資料管理程式中的一 部分功能。而且未來如果處理對 XML 文件的查 詢時可以使用 DOM 中所提供的 XML 查詢語 言,將比現在 DOM API 的功能更強大及方便許 多。 而就整體電子商務而言,電子商務最根本的 問題還是要解決商業上供需的問題,有人要賣東 西所以要找到買家,有人要買東西所以要找到賣 家,一個適當的架構能幫助買家和賣家更快找到 彼此,且買家開出賣出條件,賣家也開出買入條 件做搜尋比對,如果搜尋比對符合,代表彼此對 交易條件有一定共識,可以節省彼此協調講價的 時間。本系統適當應用的話就可以達到這兩個目 的-促成交易,減少協調講價時間。 電子商務中將交易雙方對象依廠商和客戶 來作分類的話,我們可以將之分成兩類,企業對 企業、企業對客戶兩種交易型態。 我們將我們的系統定位在”企業”對客戶的 交易,其中所謂的”企業”,就我們一般直覺而言, 都是指較大型的公司或大型電子商店,但這樣的 企業其實本身就有著大量的資料,且有著高度的 名氣,他們的資料都是放在資料庫中,基於安全 問題,並不可能開放存取,要對他們的資料進行 查詢,必須透過他們網頁中的查詢表格(search form)輸入查詢,如果要提供單一介面幫使用者 去查詢多個這樣的企業資料,可能就必須使用就 如同[5]的做法。因為這樣的”企業”所能讓我們存 取到的資料並不是 XML 文件,且[3]中對這樣的 應用其實已經處理的很好,因此並不是我們系統 的應用範圍。 我們這裡希望定位處理的”企業”,其實應該 稱不上是”企業”,而是想出售物品的個人或者是 小公司,他們的特性是沒有名氣、可能是非專業 的、物品的數量和複雜度不高,所以物品資料並 不需放在資料庫中,可以直接用 XML 文件的形 式存在。 例如在電子商務中有一個應用是二手商品 買賣,出售者可能出售一些自己多餘或不在需要 的物品,這時出售者就可以依據相關商品的 DTD 撰寫 XML 文件,然後向 Server object 註冊該 XML 文件的 URL。這樣做的好處是、出售商品 者除了在自己的網頁上刊登一份消息外,還可以 透過我們系統的 Server object 讓有需要這個物品 者能更快找到此物品,完成交易,且出售者可以 隨時去更動資料,Server object 本身也不用去維 護大量的 XML 文件。 實際的架構如下: (1) 先成立一個商品 DTD 集合網站,蒐集可 能的 DTD,這樣的想法是因為 XML 可 以自己訂定的 DTD,絕對是 XML 最大 的優點之一,但過多且沒有管制的 DTD 對 XML 並不是件好事,從 SGML 的經 驗中便可以驗證這一點,而且這樣可能 會影響 XML 文件的資料交流,且可能讓 使用者常常重複的花費時間去訂定類似 的 DTD,因此便有了一些國際組織如 ISO ( International Organization for Standardization ) 和 ANSI ( American National Standards Institute)開始收集一 些專門定位給某些應用的標準 DTD;或 者 是 如 VEO Systems[10] 訂 定 一 個 CBL(Common Business Library),之後再 利用這個基本的 Library 去組合出各式 各樣商業上使用的 DTD,本架構是採用 前者的想法。並提供一個查詢介面,讓使用者可以快速找到他想要的 DTD。我 們的系統也建了一個簡單的 DTD 查詢網 站。
(2)
想要販售商品者可以到商品 DTD 集合的 網站去查詢它所要出售商品的 DTD,然 後手動或用輔助的編輯器依照 DTD 在自 己的網頁中撰寫相對的 XML 文件。這樣 做的第一個好處是如前面提到的可以提 供資訊交流的一致性,第二個好處是販 售商品者可以知道出售這樣商品需要提 供那些商品資訊。(3)
sever object 就可以像現在的搜尋引擎一 樣主動的去找到這個網頁或者被動的等 使用者註冊,然後將這些位址做適當的 目錄管理。(4)
想 購 買 商 品 者 也 就 可 以 連 上 Server object,藉由 Applet 的 QBE_Like 介面輸 入查詢條件,找到他想買的商品,之後 藉著資料中的聯絡方式和出售者做進一 步交易細節。6. 結論及未來展望
在本篇論文中,我們參考及使用到許多現在 或不久的未來將在網際網路應用上極重要的技 術及方法-CORBA、XML、DOM、JAVA 等, 將他們結合做一應用,我們利用 DOM API 撰寫 了 一 個 XML 文 件 Xml_thread 處 理 前 端 QBE_Like 介面輸入對 XML 文件的查詢,並使用 CORBA 當 我 們 系 統 的 Communication Infrastructure。本系統有以下的特點: (1) 就如同許多討論 XML 文章中提到,在前 端瀏覽器對 XML 的支援尚未完善前,可 以先在後端利用 DOM 來操作 XML 文 件,先得到使用 XML 的好處。本系統依 照此原則,在後端利用 DOM 來撰寫 Xml_thread 操作 XML 文件,使前端使用 者可以對 XML 文件作查詢的動作。 (2) QBE(Query By Example)查詢語言是多 個關聯式查詢語言中較容易的查詢語 言,對一些非專業的資料庫使用者應該 是一個不錯的方式,我們可以發現在一 些定位在使用方式較簡易的關聯式資料 庫,如 MS Access 就是使用 QBE 的查詢 語 言 。 因 此 本 系 統 在 前 端 提 供 一 個 QBE_Like 的查詢方式讓使用者來查詢 XML 文件,因為它簡易使用的特性,提 供給一般使用者,應該是一個還不錯的 選擇。不過在使用在 XML 文件查詢時, 它會受到一些限制,就是有些 DTD 其實 是蠻複雜的,這時候用 QBE_Like 介面 時,會因為這時可以因為 DTD 中宣告的 元素和屬性很多,而使得 QBE_Like 查 詢輸入表格過大,反而令使用者無所是 從4。 在實作的過程中,我們遭遇到許多問題,從 這樣的過程中,我們也從中知道本系統還有下列 可以改進的地方: (1) 就如同大部分的 Wrapper 系統一般,大 部分的 Wrapper 系統在一開始時都是由 全手動去撰寫程式碼開始,之後再設法 讓程式碼變成全自動產生,本系統現在 也還是全手動撰寫程式碼的階段,可以 進一步努力讓它朝向全自動產生程式碼 的方式。 (2) 就我們這個題目中 XML 的部分,其實目 前真正要處理的是有關 XML 的資料查 詢,所以最重要的關鍵應該就在一個完 整的 XML 查詢語言的出現,但 XML 查 詢語言標準目前還在 W3C 訂定中,各份 草案的內容也都還有需要加強的地方, 如果標準真正制定完成,對 XML 資料的 查詢處理等就將是很容易的事。那時候4 這樣的問題我們可以在 server object 和 client 都多
加上一個判斷條件,如果使用者所選擇的 DTD 中的 elements 和 attributes 超過一定數目,則 client 端就不 再出現 QBE_Like 介面,而是和現在一般搜尋引擎一 樣的全文檢索輸入介面,後端則是利用全文檢索技術 或轉換成 XML 查詢語言格式作處理。
本系統的 Xml_thread 就不再需要使用現 在的 DOM Level 1 API,而只需要撰寫一 個可以轉換我們 QBE_Like 查詢語言和 XML 查詢語言命令,並將查詢結果由原 本 XML 查詢語言的格式轉成表格形式 的程式碼模組即可。 所以那時我們的系統架構就可以做些修 正,讓系統變得更簡單些,那時我們不但 不再需要自己做查詢的動作,且我們那時 也不再需要利用 JAVA thread 分別處理 一個個 XML 文件,因為在未來 XML 查 詢語言可以自動在一個查詢中處理多個 XML 文件,因此屆時系統將因為工具更 有威力,我們的系統實作將簡化許多。 (3) 網路上除了 RDBMS、XML 以外,還有 著 許 多 其 他 種 的 資 料 型 態 , 例 如 OODBMS、ORDBMS、Text、HTML 等, 甚至是 CORBA 架構中管理 Service 的 Trader Server,是不是能用我們目前使用 的 QBE_like 介面和架構來讓使用者查詢 自己想要的資料或 Service,都是我們可 以繼續再探討的目標。 (4) 目前本系統的 XML 查詢目前只有處理 文字的查詢,對多媒體資料如聲音、影 像及動畫尚未討論和處理,如果要處理 這類資料的查詢,必須要在使用者選擇 DTD 後,在傳給 client 時必須由原本的 一維的字串陣列攜帶該 DTD 中 attribute 或 element 的名稱,增加成二維字串陣 列 , 多 加 上 一 個 字 串 陣 列 來 決 定 該 attribute 或 element 的資料型態是文字、 聲音、影像或動畫等;當使用者想查詢 型態是聲音、影像或動畫的 attribute 或 element 時,client applet 必需再到 Web server 下 載 適 當 的 程 式 碼 模 組 並 執 行 之,顯示出相對且適合該資料型態的查 詢輸入介面5,當然在後續傳回查詢條件 5 關於這類多媒體資料的查詢輸入介面,已經有許多 時的參數陣列型態和查詢處理也必須有 所變動,這是我們可以再研究及改進的 地方。
(5)
XML 有些相關標準還在制定中,對 XML 應用方式可能的影響值得我們繼續觀 察。參考文獻
[1] OMG,”CORBA2.2,” http://www.omg.org/corba/corbaiiop.html,July 1998.[2] W3C, ”Document Object Model Level 1 specification,”http://www.w3.org/TR/REC-DO M-Level-1/, Oct 1998.
[3] Robert B.Doorenbos, Oren Etzioni, and Daniel S.Weld, ”A Scable Comparison-shopping Agent for the World-Wide Web,” Agent '97 Conference Proceedngs, 1997.
[4] Chi-I Hung, ”An Implementation of Wrapper for Integrating OODB with CORBA,” Master Thesis, Department of Applied Math, National Chung-Hsing University, June 1998.
[5] Lauren Wood, ”Programming the Web:The W3C DOM Specification,SoftQuad Software Inc.,” IEEE Internet Computing, January-February 1999, pp 48-54.
[6] D. Pedrick, J. Weedon, J. Goldberg, E. Bleifield, Programming with VisiBroker, Wiley Computer Publishing, 1998.
[7] Norman Walsh, ”A Technical Introduction to XML,” http://nwalsh.com/docs/articles/XML/. [8] Sean McGrath, XML by example: building
E-commerce applications, Prentice Hall PTR, 1998.
[9] W3C, “Extensible Markup Language (XML) 研究人員及廠商進行研究及開發,例如影像的查詢便 有許多人正在研究 QBIC(Query by Image Content) 的介面和查詢處理,我們可以參考他們的成果將之融 入到自己的系統中,而不必重頭開始。
1.0 Recommendation,”
http://www.w3.org/TR/1998/REC-XML-19980 210.html, Feb 1998.
[10] Bert Meltzer, and Robert Glushko, ”XML and Electronic Commerce:Enabling the Network Economy,” SIGMOD Recored, Vol27, No.4, December 1998.
[11] Asuman Dogac, Ilker Durusoy, Sena Arpinar, Nesime Tatbul, Pinar Koksal, Ibrahim Cingil, and Nazife Dimilier, ”A Workflow-based Electronic Marketplace on the Web,” SIGMOD Record, Vol27, No.4, December 1998.
[12] David Wells, ”Wrappers,”
http://www.objs.com/survey/wrap.htm, April 1996.