當XML被W3C批准後迅速在1998年2月進入歷史舞台,被稱為"當年突然湧現的技術"。它被稱為HTML的繼任者,還被有些人稱為結構化數據交換的未來混合語。
由於XML是從它W3C開始的陰暗處湧現出來的,也許不可避免地,這一新數據格式將象它吸引狂熱愛好者一樣快地開始產生錯誤概念。在本專欄中,我將在一些關於XML的神話成為永久性錯誤理解前澄清它們。
神話1:XML是由微軟領導的共同成果
XML是一個共同成果,但不是微軟的。實際上,XML是由一個Sun微系統公司組織的標記語言專家小組提出的,以開發歷史悠久的ISO標准SGML用於Web的一種形式。
微軟確實是XML工作中的一個主要參與者,但是其它一些大公司也是如此(Sun,惠普,Netscape, Adobe和富士及施樂),還有主要的SGML廠商和系統集成商(ArborText,Inso, SoftQuad,Grif,Texcel和Isogen),學術團體的代表(NCSA和Text Encoding Initiative),早期使用者(DataChannel 和Vignette),和世界上最主要的SGML專家之一James Clark,他是W3CSGML的技術領袖。
關於XML,令人驚異的是所有這些人和組織都將個人和公司議事日程放在一邊,合作建立一個天生開放的標准,完全由用戶需求驅動。這些需求包括:
l 可擴展性,以定義需要的新標記。
l 結構,以表示任意復雜程度的數據。
l 校驗,以檢查數據的結構正確性。
l 媒體無關性,以用多種格式發布內容。
l 廠商和平台中立,以用標准的商業軟件甚至簡單的文本工具處理任何滿足標准的文檔。
雖然我不得不欽佩微軟對XML概念的熟練使用和推銷,但是XML並不屬於微軟。XML屬於世界。
神話2:XML是HTML的一個擴展
早期對XML的概括已導致許多人相信XML僅僅是一種通過增加新標記來擴展HTML的方法。實際上,XML和HTML在標記語言中處於完全不同的層次。HTML是一種標記語言--一套具有標准意義的標准分隔符,可放到文檔中以指示文檔中特定部分的角色。例如,在一個HTML文檔中<H2>和 </H2>之間的任何東西都被理解為一個第二級文檔標題。
標記語言
對標記語言的經驗只局限於Web的人們經常驚訝地得知HTML只是許許多多標准標記語言中的一種,這些語言在特定行業內已被開發多年。例如,航空業有一種飛機維護手冊的標記語言,稱為ATA-2100,半導體行業有一種用於電路數據的標記語言,稱為PCIS,而計算機行業有一種用於軟件文檔的標記語言,稱為DocBook。
這些標記語言中有些比HTML使用得更久,其中許多面向的是要解決的問題不同的方面。例如,考慮這段HTML:
<H2>Second-level heading</H2>
這是一段很可能屬於上面標題的文本。</P>
一段類似的DocBook可能看起來象這樣:
<SECT2>
<TITLE>二級標題</TITLE>
<PARA>這是一段肯定屬於上面標題的文本。
我們知道這一點是因為它們都包含在同一個SECT2元素內。
</PARA>
</SECT2>
雖然這些不同的標記語言有它們的不同之處,所有這些,包括HTML,在三方面都是類似的。
l 每一個都定義了一套有標准化含義和標准化使用規則的標准標記--換句話說,一個標准化的語法。
l 每一個都設計為對某一特定類型的文檔或數據工作得最好。
l 都使用有12年歷史的國際文本處理標准SGML定義它們的標准標記集和語法。
所有這些語言看起來也相似,因為它們都使用熟悉的尖括號,繼承自SGML的具體引用句法。
SGML層
根據上面的描述,應該很清楚SGML本身屬於一個不同於任何用SGML定義的個別標記語言的概念層,SGML和特定標記語言的區別經常被總結為SGML是一種元語言而不是一種語言。這是一個很不精確的概括。SGML不象真正的元語言那樣抽象,如巴克斯/納爾范式(BNF),它是用於定義程序設計語言的。不過,稱SGML為元語言確實使人抓住了關鍵:SGML不是一種特定的標記語言;它是一種定義標記語言的語言。
理解XML的關鍵因素是它屬於SGML層,而不是HTML層。XML是SGML的一種簡化形式,而不是HTML的一種擴展形式。XML和SGML的區別是XML的設計者去除了許多SGML的高級特性