XML文件為數(shù)據(jù)的存儲(chǔ)和傳遞提供了一個(gè)很好的媒介,可以這樣認(rèn)為XML就是一個(gè)數(shù)據(jù)的集合,通過(guò)XML文件對(duì)象可以對(duì)數(shù)據(jù)做任何的操作。關(guān)鍵是怎樣使用XML文件里的數(shù)據(jù),在HTML網(wǎng)頁(yè)中是否可以引用XML,網(wǎng)頁(yè)中顯示的數(shù)據(jù)來(lái)自XML文件,而該數(shù)據(jù)顯示的格式用HTML的標(biāo)記來(lái)指定。
目前,許多動(dòng)態(tài)Web網(wǎng)站的內(nèi)容數(shù)據(jù)都存放在數(shù)據(jù)庫(kù)或數(shù)據(jù)文件中。如某個(gè)網(wǎng)站的會(huì)員信息,商品信息等。對(duì)于Web程序開(kāi)發(fā)人員來(lái)說(shuō),如果要想把有用的信息從數(shù)據(jù)庫(kù)中提取出來(lái),傳統(tǒng)的方法是在服務(wù)器端編寫(xiě)腳本程序(如VBScript、JavaScript、CGI、ASP、Perl、JSP等等),通過(guò)對(duì)數(shù)據(jù)庫(kù)執(zhí)行SQL查詢得到相關(guān)記錄,然后把查詢結(jié)果組織成HTML頁(yè)面返回給客戶端,用戶使用瀏覽器觀察最終結(jié)果。為了提高系統(tǒng)服務(wù)的靈活性、可擴(kuò)展性,使服務(wù)對(duì)象范圍更廣,許多商業(yè)網(wǎng)站都盡可能地把商務(wù)規(guī)則、原始數(shù)據(jù)和表現(xiàn)形式,即執(zhí)行功能的代碼,存放數(shù)據(jù)的數(shù)據(jù)庫(kù),顯示數(shù)據(jù)的頁(yè)面單獨(dú)的劃分出來(lái),做成相互獨(dú)立的服務(wù)。HTML那種包含數(shù)據(jù)并制定相應(yīng)的顯示樣式,該方式顯然不合乎這種需求。
因此,把從數(shù)據(jù)庫(kù)提取出來(lái)的數(shù)據(jù),即原始數(shù)據(jù)存放在XML文檔中(基本不變,顯示量大的公有數(shù)據(jù)),使用樣式單文件(XSL)顯示內(nèi)容是XML技術(shù)適合于電子商務(wù)的優(yōu)勢(shì)所在。但從本質(zhì)上來(lái)說(shuō),XSL技術(shù)不是面向數(shù)據(jù)顯示的,它是一種格式轉(zhuǎn)換技術(shù),在顯示手段和方式上都遠(yuǎn)不及HTML那樣豐富。并且從本質(zhì)來(lái)說(shuō),XSL的顯示樣式方式,最終還是利用了HTML模板進(jìn)行顯示,只不過(guò)中間多了一個(gè)轉(zhuǎn)換罷了。對(duì)編程人員來(lái)說(shuō),一種較為理想的方案是把HTML和XML兩種技術(shù)直接相結(jié)合起來(lái),優(yōu)勢(shì)互補(bǔ),使真正的原始數(shù)據(jù)在能夠保持本來(lái)意義和結(jié)構(gòu)的同時(shí),還能充分利用HTML那千變?nèi)f化的顯示技巧。
XML數(shù)據(jù)島就是這種技術(shù)融合的產(chǎn)物,它使用<XML>標(biāo)簽把XML數(shù)據(jù)直接嵌入到HTML頁(yè)面中,從而實(shí)現(xiàn)了二者的優(yōu)勢(shì)互補(bǔ)。用Internet Explorer 5.0版本以上的瀏覽器,非正式的<XML>標(biāo)記可用于創(chuàng)建XML數(shù)據(jù)島。
當(dāng)我們?cè)?span lang=EN-US>HTML文檔中通過(guò)使用XML標(biāo)記來(lái)嵌入XML數(shù)據(jù)時(shí),就在HTML文檔中形成一個(gè)XML數(shù)據(jù)島(Data Island)。數(shù)據(jù)島是指存在于HTML頁(yè)面中的XML數(shù)據(jù)。數(shù)據(jù)島允許你在HTML頁(yè)面中集成XML,對(duì)XML編寫(xiě)腳本,不需要通過(guò)腳本或<OBJECT>標(biāo)簽讀取XML。幾乎所有能夠存在于一個(gè)結(jié)構(gòu)完整的XML文檔中的東西都能存在于一個(gè)數(shù)據(jù)島中。包括處理指示、DOCTYPE聲明和內(nèi)部子集。這里面需要我們注意的是,XML文檔中的設(shè)置編碼的字符串不能放在其中。
我們可以利用XML元素來(lái)創(chuàng)建數(shù)據(jù)島,數(shù)據(jù)島就是被HTML頁(yè)面引用或包含的XML數(shù)據(jù),XML數(shù)據(jù)可以包含在HTML文件內(nèi),也可以包含在某外部文件內(nèi),利用XML數(shù)據(jù)島可以讓我們免除編寫(xiě)復(fù)雜腳本的麻煩。DOM可對(duì)XML文檔進(jìn)行解析,文檔中的元素、實(shí)體、屬性等所有個(gè)體都可以用對(duì)象模型表示,整個(gè)文檔的邏輯結(jié)構(gòu)類似一棵樹(shù),生成的對(duì)象模型就是樹(shù)的節(jié)點(diǎn),每個(gè)對(duì)象同時(shí)包含了方法和屬性,DOM提供了許多查找節(jié)點(diǎn)的方法。利用DOM,開(kāi)發(fā)人員可以動(dòng)態(tài)地創(chuàng)建XML、遍歷文檔、增加(刪除/修改)文檔內(nèi)容,DOM提供的API與編程語(yǔ)言無(wú)關(guān),所以對(duì)一些DOM標(biāo)準(zhǔn)中沒(méi)有明確定義的接口,不同解析器的實(shí)現(xiàn)方法可能會(huì)有所差別。
Web服務(wù)器與客戶機(jī)之間的數(shù)據(jù)傳遞方式有三種:HTML頁(yè)面、XML文檔以及XML數(shù)據(jù)島。采用數(shù)據(jù)島作為交互手段,不僅可以使數(shù)據(jù)具備一定的語(yǔ)義信息,同時(shí)還能保持HTML原有的一些特色,如利用用戶端腳本程序?qū)崿F(xiàn)動(dòng)態(tài)信息交換等,可以在客戶端對(duì)XML里面的數(shù)據(jù)進(jìn)行操作。綜合了使用XML文檔和HTML文檔傳輸數(shù)據(jù)的優(yōu)點(diǎn)。