簡介,XML來源,XML優點,XML 良好的可擴展性,XML 內容與形式的分離,其他優點,XML主要用途,創建新的置標,存儲數據,交換數據,Web套用,XML前景展望,
簡介
近年來,隨著全球資訊網協會W3C(World Wide Web Consortium)所推薦的第二代Web語言——可擴展置標語言XML(eXtensible Markup Language)的成熟和完善,人們不斷拓展XML的作用領域。XML是一種源置標語言,是對HTML的擴展。它允許用戶為各類數據創建自己的標記,制定各種各樣的置標語言,以此來創建不依賴於平台、語言的開放數據。XML完全面向數據內容,是自描述語言,可以描述線性表、樹、圖形等數據結構,從而能成為不同套用系統之間的一種通用數據接口標準,便於不同系統之間信息的傳輸。目前基於XML的套用都是通過
DTD (Document Type Declaration)描述XML檔案的整體結構以及檔案的語法。DTD能起到傳統資料庫中模式的作用,這對於異構數據源的集成有很重要意義。隨著XML的發展,DTD顯露出許多缺點,如採用非XML的語法規則、數據類型貧乏、擴展性較差等。目前這一從
SGML繼承來的概念正在被新的XMLSchema所逐漸替代。
Schema完全採用的XML語法結構,本身即是XML的一種套用,達到了完美的一致性和自描述性。Schema對DTD進行了擴充,定義了豐富的基本數據類型,並允許用戶在這些基本數據類型基礎上自己定義數據類型,進而定義數據的類型和數據取值間的多方面約束關係,從而在套用檔案、對象或資料庫之間的數據傳輸、轉換時能方便地進行類型轉換。XMLSchema支持開放的內容模型,這意味著在不違反語義有效性的情況下可以擴充XML文檔,只要加入的元素和屬性在它們各自域的前後關係中是有效的。
XML來源
XML有兩個先驅——SGML和
HTML,這兩個語言都是非常成功的置標語言,但是它們都在某些方面存在著與生俱來的缺陷。XML正是為了解決它們的不足而誕生的。
SGML的全稱是標準通用置標語言,它從20世紀80年代初開始使用。正如XML一樣,SGML也可用於創建成千上萬的置標語言,它為語法置標提供了異常強大的工具,同時具有極好的擴展性,因此在分類和索引數據中非常有用。目前,SGML多用於科技文獻和政府辦公檔案中。
但是,SGML非常複雜,其複雜程度對於網路上的日常套用簡直不可思議。不僅如此,SGML非常昂貴。目前比較便宜的SGML軟體之一是Adobe Frame Maker,其標準版本價格為850美元,而Adobe Frame Maker+SGML是以1995美元售出的。還有最關鍵的一點,幾個主要的瀏覽器廠商都明確拒絕支持SGML,這無疑是SGML在網上傳播遇到的最大障礙。
相反,HTML免費、簡單,而且它獲得了廣泛的支持。HTML最初於1990年由CERN設計,它是一個非常簡單的SGML語言,可以方便普通人的使用。而正如設計之初所構想的那樣,HTML目前在世界範圍內得到了廣泛的套用。
正因為如此,1996年人們開始致力於描述一個新的置標語言,它既具有SGML的強大功能和可擴展性,同時又具有HTML的簡單性。全球資訊網聯盟W3C決定專門成立一個SGML專家小組來從事此項工作,由Sun公司大名鼎鼎的Jon Bosak擔任小組的指揮。
事實上,Bosak和他領導的專家小組對SGML所做的貢獻就像Java研究組對C++做出的貢獻一樣。SGML中所有非核心的、未被使用的和含義模糊的部分都被刪除,剩下的就成為短小精幹的置標工具——XML。對於XML的描述只有26頁,而當初SGML的描述卻長達500頁之多。而值得一提的是,對於XML的描述儘管篇幅只是SGML的二十分之一,但SGML中所有的精華都被保留了下來。
這以後,XML不斷發展演化,並且從化學置標語言(Chemistry Markup Language,CML)和數學置標語言(Mathematical Markup Language,MathML)中汲取了大量的經驗。1997年春天,可擴展連結語言( eXtensible Link Language,XLL)草案已被擬定,到了1997年夏天,微軟也開始了關於頻道描述格式(Channel Definition Format,CDF)的定義工作,這應該算是XML的第一個真正的套用。
最後,XML於1998年修成正果。W3C於1998年2月批准了XML的1.0版本,一個嶄新而大有前途的置標語言誕生了。
XML優點
XML 良好的可擴展性
在XML產生之前,要想定義一個置標語言並推廣利用它非常困難。一方面,如果制定了一個新的語言而期望它能生效,需要把這個標準提交給相關的組織(如W3C),等待它接受並正式公布這個標準,經過幾輪的評定和修改,到這個置標語言終於成為一個正式推薦標準時,可能已經過了幾年的時間。另一方面,為了讓這套標記得到廣泛套用,制訂者必須為它配備瀏覽工具。這樣,就不得不去遊說各個瀏覽器廠商接受並支持新制定的標記,或者索性自己開發一個新的瀏覽器去與現有的瀏覽器競爭,無論哪個辦法,都需要耗費大量的時間和工作。現在藉助XML的幫助,制定新的置標語言要簡單易行得多了,這也正是XML的優勢所在。
大家都知道,各個不同的行業可能會有一些獨特的要求。比如說,化學家需要化學公式中的一些特殊符號,建築家需要設計圖紙中的某些特殊的標記,音樂家需要音符,這些都需要單獨的標記。但是,其他網頁設計者一般不會用這些記號,也不需要這些標記。XML的優點就在於它允許各個組織、個人建立適合他們自己需要的標記庫,並且這個標記庫可以迅速地投入使用。
不僅如此,隨著當今世界越來越多元化,要想定義一套各行各業能夠普遍套用的標記既困難,也沒有必要。XML允許各個不同的行業根據自己獨特的需要制定自己的一套標記,同時,它並不要求所有瀏覽器都能處理這成千上萬個標記,同樣也不要求置標語言的制定者制定出一個非常詳盡、非常全面的語言,從而適合各個行業、各個領域的套用。比起那些追求大而全的置標語言的做法,這種具體問題具體分析的方法實際上更有助於置標語言的發展。
實際上,現在許多行業、機構都利用XML定義了自己的置標語言。比較早而且比較典型的有:化學置標語言(CML由Peter Murray-Rust制訂)和數學置標語言(MathML1.0版本,W3C1998年4月7日推薦標準)。
XML 內容與形式的分離
XML不僅允許自定義一套標記,而且這些標記不必僅限於對顯示格式的描述。XML允許根據各種不同的規則來制定標記,比如根據商業規則,根據數據描述甚至根據數據關係來制定標記。
仍以前面關於學生列表的文檔(xuesheng.dtd)為例,對兩個不同類型的文檔進行一個詳細的比較。之前的例子中,文檔是用HTML語言寫的。儘管這也是一個存儲、顯示數據的可行的方法,但它的效率和能力卻非常有限,至少存在以下3個嚴重的問題。
顯示方式內嵌於數據之中。在這個例子中,數據是用列表的形式來表示的,如果在某個時候決定改用表格來表示這些數據,那么將不得不重新編碼所有的HTML檔案,這可能意味著幾十頁或幾百頁要重寫一遍。
在數據中尋找信息非常困難。假如需要從這個網頁中找到所有季慧奇這個學生的信息,那么,需要編寫一個腳本程式,譬如使用JavaScript,VBScript。程式應該如何編寫呢?唯一可行的辦法就是逐字尋找“季慧奇”這個字元串。而且即便找到了所有這些欄位,也無法確定這個“季慧奇”究竟是不是學生的姓名。
數據自身的邏輯不得不讓位於HTML語言規範的邏輯。如果要用JavaApplet來處理數據,則這個JavaApplet將不得不遍歷整個HTML檔案,把所有的HTML標記剔除掉,再把剝離出來的有用的數據重新組織。同樣,任何一個不是單純為了顯示HTML檔案的應用程式在處理HTML檔案中的數據時,都不得不做大量額外工作。
當使用XML時,以上問題就迎刃而解了。現在的標記為要表現的數據賦予了一定的含義。用這種形式存儲時,數據非常簡單明晰,因為它所攜帶的信息不是顯示上的描述,而是語義上的描述。就像後面將要看到的那樣,信息的顯示方式已經從信息本身中抽取出來,放在“樣式單”中。這樣一來,上面所說的HTML的3個問題一一得到了解決。XML內容與形式分離的3個好處如下。
在XML中,顯示樣式從數據文檔中分離出來,放在樣式單檔案中。這樣,如果要改動信息的表現方式,無須改動信息本身,只要改動樣式單檔案就夠了。如果這時候把列表的數據改用表格顯示,無須再去修改大量數據信息文檔,因為它們和同一個樣式檔案相關聯,只要改動這個樣式單檔案就可以了。
在XML中數據搜尋可以簡單高效地進行。搜尋引擎沒必要再去遍訪整個XML文檔,而只須找一下相關標記下的內容。也就是說,要想找“季慧奇”,只要看看<姓名>這個標記下的字元串數據是不是匹配。
XML是自我描述語言。即便對於一個預先規定的標記一無所知的人,這個文檔也是清晰可讀的。顯然,XML文檔中的<學號>200120101</學號>代表了一個學生的學號,可是相應的HTML文檔中的<LI>200120101</LI>就不那么清楚了。此外,信息之間的某些複雜關係,比如樹狀結構、繼承關係等,在XML中也都得到了絕好的體現,這樣就大大方便了XML的套用處理程式的開發。
其他優點
XML的良好的可擴展性及內容與形式的分離是XML最突出的優點,除此以外,XML至少還有下面三個優點。
遵循嚴格的語法要求前面講過,HTML的語法要求並不嚴格,瀏覽器可以顯示有文法錯誤的HTML檔案。但XML不但要求標記配對、嵌套,而且還要求嚴格遵守DTD的規定。XML非常注重準確性,如果語法有絲毫差錯,分析器都會停止對它的進一步處理。在處理HTML檔案時,瀏覽器通常具備一個內置的修改功能去猜測HTML檔案中漏掉了什麼,並試圖修改這個有誤的檔案。XML分析器則不同,無論這個分析器是內嵌於瀏覽器還是作為獨立的處理器,都絕對不允許猜測和修改。就像編譯一個程式一樣,一個XML文檔或者被判別為“正確”而被接受,或者被判別為“錯誤”的而不予運行。這是因為XML的宗旨在於通過非標準的標記傳遞結構化的數據,一個分析器無法像處理一個已有了一套固定DTD的HTML檔案那樣猜出檔案中到底有什麼,又缺什麼。嚴格的語法要求固然表面上顯得煩瑣,但一個具有良好語法結構的網頁文檔可以提供較好的可讀性和可維護性,從長遠來看還是大有裨益的。這大大減輕了瀏覽器開發人員的負擔,也提高了瀏覽器的時間和空間效率。以後隨著XML的自動生成工具和所見即所得的編輯器的問世,XML的編寫者也就不用再操心XML的源碼是什麼樣子,更不用去想XML的一些瑣碎的語法規定。當然,這對於這類XML的開發工具也就提出了比較高的要求。
便於不同系統之間信息的傳輸當今的計算機世界中,不同企業、不同部門中存在著許多不同的系統。作業系統有NT、Unix等,資料庫系統有SQLServer,Oracle等,要想在這些不同的平台、不同的資料庫系統之間傳輸信息,不得不使用一些特殊的軟體,這樣就非常不方便。而不同的顯示界面,從工作站、個人計算機到手機,使這些信息的個性化顯示也變得相當困難。有了XML,各種不同的系統之間可以採用XML作為交流媒介。XML不但簡單易讀,而且可以標記各種文字、圖像甚至二進制檔案,只要有XML處理工具,就可以輕鬆地讀取並利用這些數據,這使得XML成為一種非常理想的網際語言。
具有較好的保值性XML的保值性來自它的先驅之一——SGML語言。SGML作為一套有著十幾年歷史的國際標準,它最初設計的一大目標就是要為文檔提供50年以上的壽命。
我們是通過流傳至今的大量歷史文獻知道祖先悠久輝煌的歷史,同樣,我們的後代也要靠我們留下的文字資料來了解我們。可是現在大部分資料都是電子文檔的形式,而且許多沒有被列印下來單獨存檔,而只留了幾份拷貝。若干年後,我們的子孫很可能面對著這些電子文檔,苦於沒有軟體工具能夠打開。如果沒有XML,恐怕只有兩個辦法:要么返樸歸真繼續使用紙介質,要么不辭勞苦隨著軟體的更新換代來大規模地轉換原有文檔到最新的格式。SGML和XML不但能夠長期作為一種通用的標準,而且很容易向其他格式的文檔轉化,它們的設計對這一問題給出了圓滿的解決方案。
XML主要用途
設計XML的本意是用來存儲、傳送和交換數據的,而不是用來顯示數據的。
創建新的置標
語言作為元置標語言,XML可以為用戶定義適合本行業領域的置標語言。目前這一套用的成功例子比比皆是,例如化學領域的CML,數學領域的MathML,移動通信領域的WML等。
存儲數據
XML文檔是帶有一定語義的純文本格式的檔案,可以用來存儲數據,也可以方便地編寫應用程式來存儲和讀取存儲的數據。由於XML對於硬體、軟體、應用程式是獨立的,因此也可以使用除標準HTML瀏覽器以外的其他應用程式使用XML文檔數據,其他應用程式可以將XML文檔作為數據源來訪問,就像它們訪問資料庫一樣,使得用XML存儲的數據更為有用。XML良好的自描述性也使它成為保存歷史檔案,如政府檔案、公文、科學研究報告等的最佳選擇。
交換數據
使用XML可以將數據在不兼容的系統之間進行交換。在現實中,計算機系統和資料庫所包含的數據格式不兼容。將數據轉換成XML文檔,就能夠被不同類型的多種應用程式閱讀,可以大大地降低套用的複雜性。XML也將成為在Internet上的企業之間交換金融信息的主要語言。
Web套用
由於XML是由SGML特別為Web簡化的,因此XML文檔將成為Web資源的重要組成部分,XML使得搜尋引擎更為智慧型和準確。XML在Web方面的套用有如下方面。
集成不同數據源XML文檔可以用來描述包含在不同套用的數據,從Web頁面到資料庫記錄等,Web套用的中間層服務程式將這些用XML表示的數據組合起來,然後提交給客戶端或者下一步的套用。XML還提供客戶端包含機制,可以將多個來源的數據集成在一個文檔內顯示。
本地計算XML數據傳輸到客戶端後,客戶端可以利用XML分析器對數據進行解析和操作,在完成系統所需功能的同時,合理分配客戶端和伺服器的負荷。比如:資料庫記錄可以直接傳輸到客戶端,然後再進行排序,傳統的HTML就無法做到這一點。
數據的多種顯示XML將內容與表現分離,XML只描述數據的結構和語義,顯示外觀則通過樣式單檔案(CSS或XSL)進行描述。因此,只需在顯示時配置不同的樣式單,即可實現多種顯示效果。
網路出版隨著網際網路的發展,網路已經成為一種新的媒體,人們在網路上發布各種信息,信息的發布形式和發布語言也多種多樣,其中基於XML的顯示技術和顯示語言發揮了重要作用。比如eBook、eNewspaper等,就利用了XML的顯示語言。
支持Web套用的互操作和集成Web界面定義語言(Web Interface Definition Language,WIDL)是Web Methods公司定義的一個XML套用,它是一個能夠用於Web的資源和企業套用接口的語言標準。通過它,Web套用可以自動存取Web資源和企業套用。
XML前景展望
XML自推出以來,尤其是在1998年2月成為W3C推薦標準以來,受到了廣泛的支持。各大軟體廠商如IBM、Microsoft、Oracle、Sun等都積極支持並參與XML的研究和產品化工作,先後推出了支持XML的產品或者將改造原有的產品以支持XML,W3C也一直致力於完善XML的整個理論體系。
XML雖然獲得了極大的支持,但是它還有很長的路要走。首先,XML的規則只是邁出了第一步,還有許多技術細節沒有解決。其次,現在雖然出現了一些XML工具和套用,但是其市場反應還有待進一步觀察。另外如何讓更多的人迅速學會使用XML,並利用它進行開發,進而促進XML的套用也是一個問題。因此XML的出現和迅猛發展並不意味著HTML即將退出網際網路舞台,由於HTML的易學易用和非常多的工具支持,HTML將在較長的時間裡繼續在Web舞台上充當主角。但是如果用戶想超越HTML的範圍,XML將是最佳的選擇。
另外,由於XML是用於定義語言的元語言,任何個人、公司和組織都可以利用它來定義自己的辭彙表(通過DTD或Schema表示),這雖然是XML的魅力和靈活性之所在,但同時也是XML的最大問題之所在,如果每個人、公司和組織都定義了自己的辭彙表,它們之間的通信就會出現困難。因此在一些領域先後出現了一些標準化組織,它們的任務就是規範本領域的辭彙表,形成統一的標準,使得在本領域內的通信成為可能。但在標準推出並得到廣泛認可之前,各自為政的局面將繼續下去。更糟糕的是,由於對套用的理解不一致和商業利益等原因,同一個領域也許還有多個標準化組織,它們形成的辭彙表並不完全兼容,使得採取不同標準的計算機仍然難以通信。
無論如何,XML的出現使網際網路跨入了一個新的階段,它將成為網際網路領域中一個重要的開發平台。XML的誕生已經而且將繼續促使全新種類的應用程式的產生,而這些新的應用程式又將需要新的軟體和硬體工具。可以預測,無論是在軟體還是硬體上,XML都將開闢一系列的新市場,促成網際網路上新的革命。