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