網(wǎng)絡(luò)管理員指導(dǎo):Web中的XML應(yīng)用

字號:

Internet改變了世界。在Internet迅速發(fā)展的20年中,人們的生活和工作等各個方面都不知不覺地發(fā)生著巨大的變化。如今,Internet已經(jīng)無處不在了,這其中WWW(World Wide Web)起了決定性的作用。
    隨著需求的發(fā)展,Web的功能不再停留在原有的靜態(tài)數(shù)據(jù)獲取上,而是朝著更高級、更智能的Web服務(wù)發(fā)展。簡單地說,Web服務(wù)能夠?qū)?shù)據(jù)進(jìn)行動態(tài)搜索、采集和整理,為人們提供真正需要的信息。人們通過它可以得到個性化服務(wù),方便地查找資料、購買產(chǎn)品,公司也可以通過它定購原材料、獲取訂單、出售商品。
    人們漸漸地發(fā)現(xiàn),由于世界上存在著如此多的、完全不同的客戶平臺,在不同平臺間交換數(shù)據(jù),同時還要保證數(shù)據(jù)的完整和服務(wù)的高效,這是件令人頭痛的事情。在大型Web應(yīng)用中,工程師們往往被數(shù)據(jù)格式的轉(zhuǎn)換弄得疲憊不堪,即便是整理完成的數(shù)據(jù),如何讓各種客戶端都能正確獲取和理解也是不小的麻煩。最終,這一問題成為制約Web Service發(fā)展的瓶頸。因此,人們需要一種平臺無關(guān)的、能夠同時被人類和機器所理解和處理的文本數(shù)據(jù)格式。于是,XML誕生了。
    關(guān)注XML
    XML(eXtansible Markup Language,可擴展標(biāo)記語言)是一套用來標(biāo)記文檔的語法,它和現(xiàn)在的Web標(biāo)記語言HTML相同,都是由SGML發(fā)展而來(由于SGML過于求大、求全,未能廣泛應(yīng)用),同樣由W3C(World Wide Web Consortium萬維網(wǎng)聯(lián)盟)制定標(biāo)準(zhǔn)。其目標(biāo)是統(tǒng)一未來跨平臺數(shù)據(jù)交換的格式,并取代現(xiàn)有的HTML成為下一代Web頁的標(biāo)準(zhǔn)。
    XML和HTML都采用標(biāo)記來表示數(shù)據(jù),但本質(zhì)上卻完全不同。HTML標(biāo)記由W3C管理,只有W3C能夠定義、擴展和管理這些標(biāo)記,因此,如果自定義的標(biāo)記不被W3C承認(rèn),也就沒有任何價值。同時,HTML本身不能幫助理解或管理數(shù)據(jù),例如,要從HTML文本中提取有效數(shù)據(jù)完全憑借人類的思維,我們無法編寫這樣的程序,讓它從關(guān)于書本的HTML文本中獲取作者的名稱。因為有的作者可能用
    表示,有的可能被包含,HTML并未對如何表示一個作者制定規(guī)范,因而沒法讓程序理解哪個標(biāo)記包含作者,哪個沒有。
    XML正好相反,它的標(biāo)記是可自定義的、可擴展的和可識別的。例如,我們可以在關(guān)于書籍的XML文本中,定義標(biāo)記為書本的作者,只要遵循相應(yīng)的DTD(Document Type Define,文檔類型定義),那么任何來源的XML文本,其元素都可以被正確識別,這在HTML是無法實現(xiàn)的。更重要的是,理論上任何應(yīng)用都可以識別并處理這些數(shù)據(jù),如Web瀏覽器、WAP手機、數(shù)據(jù)庫系統(tǒng)或任何其它傳統(tǒng)軟件,只要它們能夠理解并遵守DTD規(guī)范就都可以。最后,依照每個應(yīng)用的需要,可以根據(jù)實際情況創(chuàng)建更多標(biāo)記,或賦予標(biāo)記不同的含義。如前面的,在介紹書本的文檔中可以是作者,在介紹古董的文檔中可以是古玩的名稱,在學(xué)習(xí)化學(xué)的文檔中可以是化學(xué)元素,完全可以根據(jù)需求來處理,并且能夠保證不被混淆。
    另外,XML比HTML更加嚴(yán)格。它不允許出現(xiàn)不配對的標(biāo)記,如常用的回車符
    ,在XML中,要么是
    ,要么是
    
。也不允許標(biāo)記的堆疊,如
,而且XML區(qū)分大小寫。最后,XML文檔有且僅有一個根元素。
    XML可以應(yīng)用到Web,但不限于Web,就像我們看到的那樣,通過XML最終在前所未有的范圍內(nèi),實現(xiàn)統(tǒng)一的數(shù)據(jù)格式規(guī)范和完善的處理方法。
    由于XML的可擴展標(biāo)記非常靈活,能夠正確解析它的瀏覽器非常稀少?,F(xiàn)有的XHTML做出了嘗試,它是一種比XML更加嚴(yán)格的超文本標(biāo)記語言,但它畢竟還是屬于固定標(biāo)記的文檔,在數(shù)據(jù)交換中還不能和XML相提并論。正是由于目前的瀏覽器對XML的支持不夠,造成XML在Web中的應(yīng)用受到了嚴(yán)重限制,因此,將XML應(yīng)用到Web必須采用其它的手段。目前,被廣泛應(yīng)用的主要包括W3C自己制定的XSL和一些服務(wù)器端腳本,如PHP、JSP等。下面談?wù)勥@些Web中的XML應(yīng)用方法,希望能夠達(dá)到拋磚引玉的目的。
    XML與XSLT
    首先,我們來看看由W3C制定的XML轉(zhuǎn)換標(biāo)準(zhǔn)—XSL(eXtansible Style Language,擴展樣式表語言)。它的作用就是讓XML看上去像現(xiàn)有的HTML一樣多姿多彩。在此基礎(chǔ)上,發(fā)展了三種XML應(yīng)用:XSLT、Xpath和XSL-SOXSLT(XSL Transformation)負(fù)責(zé)將XML文檔動態(tài)地轉(zhuǎn)換為HTML格式,并發(fā)送給瀏覽器。后兩種也具備類似功能,由于應(yīng)用不及XSLT廣泛,就不再介紹。
    要使用XSLT,必須在XML文檔中指出。例如,要使一篇XML文檔被瀏覽器請求時呈現(xiàn)類似于HTML的效果,必須在XML文檔前面指定相應(yīng)的XSL文件,如下所示:
    
    
    whoami    …… xml 數(shù)據(jù) ……
    
    在相應(yīng)路徑中,應(yīng)當(dāng)有一個合適的normal.xsl文檔。
    XSLT使用模板完成XML到HTML的轉(zhuǎn)換。例如,想要將文檔中的節(jié)點提取出來,并顯示為加粗字符,這樣的XSLT可以滿足要求:
    // 文件名:normal.xsl
    
    
        xmlnsxsl=http://www.w3.org/TR/WD-xsl,注意區(qū)分大小寫 //-->