Java開發者XML基礎(一)
|
XML介紹
常常會出現這種情況,新思想產生之后,人們回過頭來往往覺得其非常簡單并且理所應當,以至于每個人都奇怪竟然以前不是這樣。這種情況往往表明所謂的新思想畢竟不是真正的全新的思想。Java這一革新性的語言就是吸取之前的所有程序語言的思想才得以出現的。就象Java源于之前的程序語言一樣,現在出現了XML——可擴展標記語言(the Extensible Markup Language)。XML是一種方便人們描述數據的輕量語言。
XML為標記結構性信息如文本提供了一種簡單而通用的格式。XML承繼了HTML這一通用文本表示格式并將之推廣,從而可處理任何類型的數據。在此過程中,XML不僅重鑄了HTML并且正影響著商業業務關于其自身信息的考慮。在世界越來越被文檔和數據交換驅策的情況下,XML時代來臨了。
一點背景知識
XML和HTML之所以被稱為標記語言(markup languages)是因為XML用象征結構和意義的標簽來包裹文本部分,從而為純文本文檔添加結構信息,這一點和人們用鋼筆來標識句子、添加注釋很相似。然而HTML定義了一系列的標簽和標簽結構,而XML沒有預先定義這些,XML的創建者可以定義標簽、規則以及它們的含義。
XML和HTML都源自標準通用標記語言SGML。SGML(Standard Generalized Markup Language)是所有標記語言的始祖,在出版業(包括O'Reilly)廣泛應用多年。但是直到Web通行,它才通過HTML流傳開來。HTML起自SGML的一個小小應用,如果HTML無所不能的話,這說明簡單勝過一切。
然而盡管HTML曾經頗為風行,但最終結果表明它還大有局限。使用HTML的文檔把結構信息(如<head>和 <body>)和描述信息(舉個尤其過分的例子:<blink>)不恰當地混在一起。這種把模型和用戶界面攪在一塊兒的方式對HTML作為數據交互格式帶來了限制,因為計算機難以理解這種方式。XML文檔完全由結構組成,應用含義取決于文檔讀者。本章我們將看到,有幾種相關語言用于解釋和轉換XML以利于其顯示和后續處理。
文本還是二進制
Tim Berners-Lee二十世紀八十年代后期在歐洲粒子物理研究所(CERN)開始試運行Web時,他想用超文本組織規劃信息。由于Web需要一種協議,HTTP——一種基于文本的簡單客戶端-服務器協議創建出來。純文本方式到底有什么過人之處呢?比如說,Tim為什么不采用微軟的Word格式做為Web文檔的基礎呢?基于二進制的、人類不易閱讀的格式和協議難道不是效率更高嗎?既然從Web誕生到現在有數以百萬億計的HTTP事務,讓它們用英文單詞“GET”和“POST”,這真的個好主意嗎?
答案是“是”,如我們現在看到的一樣。開發人員顯然更容易和人類可讀的東西打交道。盡管可以在時間和空間上對其進行高度優化,但由于它已被普遍接受并且可輕易跨越多個平臺,簡單和透明顯得更為重要。這是XML的首要基本原則。
通用解析器
使用文本交換數據不僅僅是一種新思想;從歷史上看,必須為每個新文檔格式寫一個新的解析器。解析器是讀取文檔并能理解格式規則的應用程序,它常要求文檔內容符合某些規則。例如,Java中的Properties類是專門處理標準屬性文件格式的解析器。在簡單電子制表程序中,我們構造了一個能理解基本數學表達式的解析器。我們將看到,隨著復雜度的增加,解析可能變得非常棘手。
XML狀態
本文中我們要討論的API非常強大而且已經很好地測試過,如今它們已被廣泛應用于企業級系統。遺憾的是,現在和Java綁定的XML工具只能部分解除開發者的負擔。
盡管我們已經從低級的字符串處理跨越到公共的結構化文檔格式,但標準工具通常仍然要求開發人員編寫低級代碼來遍歷文本內容,手工解析字符串數據。這樣的程序難免有點不太穩定,而且其中的大部分工作單調乏味。下一步我們將使用生成工具讀取XML文檔描述(XML DTD或XML Schema)并生成相應的Java類,或者將已經存在的類自動綁定到XML數據上。
XML API
Java1.4自帶所有和XML協同工作的基本API,包括javax.xml標準擴展包,該包處理用于XML的簡單API(Simple API for XML,SAX)和文檔對象模型(document.nbspObject Model,DOM)以及擴展的風格表單語言(eXtensible Stylesheet Language,XSL)轉換。如果您使用的是Java1.4之前的版本,您仍然可以使用所有這些工具,但您必須從http://java.sun.com/xml/.上下載各個相應程序包。
XML和Web瀏覽器
微軟公司的IE網頁瀏覽器是第一個顯式支持XML的瀏覽器。如果您在IE5.0或以上版本中載入XML文件,文件將使用特殊的樣式菜單顯示為一棵樹的形式。通過使用動態HTML,該樣式菜單允許查看文檔的時候收縮和展開樹節點。IE也支持在瀏覽器中直接進行基本的XSL轉換。
Netscape 6.x 和 最新的 Mozilla也能理解XML內容并支持通過XSL顯示文檔。然而到本章寫作的時候為止,它們缺省狀況仍不能提供友好的閱讀工具。您可以通過使用“查看源文件”選項來使XML以較好形式顯示。但一般而言,如果您通過以上這些瀏覽器或其它不顯式轉換XML的瀏覽器加載XML文檔,這些瀏覽器只是簡單地顯示剝除所有標簽(結構信息)之后的文檔文本。這是它們作用于XML的預定方式。