級別: 中級
Uche Ogbuji, 首席顧問, Fourthought, Inc.
2004 年 3 月 01 日
XML
世界非常龐大,而且還在不斷成長,存在大量不同的標準以復雜的方式互相影響。新手很難確定哪些是 XML
最重要的方面,用戶也難以跟蹤這個領域出現的新生事物和變化。XML 是一種基本語法,可用于開發本地或全局的詞匯表。XML
成功的關鍵就在于一些非常重要的數據格式定義成了 XML 詞匯表。本文中,Uche Ogbuji 將介紹其中最重要的一些詞匯表。
XML
變得越來越強大,得到了迅速的發展。它已經證明自己是一種非常有價值的技術,但可能也是一種令人害怕的技術,如果考慮到掛在“XML”一詞下面不斷變化的
各個部分。在這一組文章中,我將簡述我認為最重要的 XML 技術,討論它們如何在 XML
世界中更大的范圍內彼此融合。為了進一步研究和學習以使用各種技術,我還推薦了一些教程和其他有用的參考資料。
這里介紹的所有技術都是
標準,盡管這個詞本身就有點捉摸不定。標準有各種各樣的形式,而且在同一個領域中常常有多種標準互相競爭。我按照實踐的方法把標準定義為:被不同的供應商大量采用的或者有影響、獨立于供應商的組織推薦的規范。
在
本系列的第一篇文章中主要討論了核心 XML 技術。(關于各種標準開發團體的概述以及標準的分類請參閱
那篇文章中的側欄。)
第二篇文章中
探討了和開發人員處理 XML 有關的標準。本文中我將介紹最重要的一些 XML 應用(也稱為詞匯表,雖然不很準確)。和原來的 SGML
一樣,XML 也是一種元語言,是定義其他語言的語法基礎。這些語言(如 SGML 中的 HTML,XML 中的 XHTML)是 應用——不要與程序員編寫的應用程序(軟件應用)如 IBM DB2 混淆。
在第 4 部分,我將就以前所述的這些信息加以比較,提供一個方便的交叉索引。
XHTML
XHTML 1.0
[W3C 推薦標準]基本上是對 HTML 4 的改寫,使其成為結構良好的 XML。HTML 是一種 SGML 應用,當 XML 作為對 SGML 在 Web 應用上的簡化和規范化開發出來的時候,HTML(本身是 Web 上的
通用語言)
就成為采用 XML 的首選目標。于是出現了 HTML 的一種變體,稱為 XHTML。XHTML 研究的目標是一種更容易解析(因為 XML
的語法更加嚴格)的 HTML 語言。XHTML 很容易用現成的 XML 工具處理,力求更好地分離內容與表示。XHTML 是最古老的 XML
應用之一,有許多利益集團在不同的部分和版本中起過作用。我將盡力對其中的大部分加以概括。
與三種HTML 4 DTD——
Strict、
Transitional和
Frameset對應,XHTML 1.0 定義了不同的 DTD 和名稱空間。
Modularization of XHTML[W3C
推薦標準]提供了一個框架,把 XHTML 分解成單獨的模塊,作為不同的 DTD
定義。比如,用于定義列表的所有元素和屬性組成一個模塊,而和表示有關的元素類型則放在另一個模塊中。這樣,就可以通過增加、減少和修改通用的獨立模塊開
發和重新定義 XHTML。沿著這條路線,第一步就是 XHTML Basic[W3C 推薦標準],它定義了任何作為 XHTML 的語言都必須具有的最小 XHTML 模塊集。XHTML Basic 本身可以作為 Web 客戶的內容語言,如移動電話、PDA、尋呼機和置頂盒。
XHTML 1.1[W3C 推薦標準]基本上就是使用模塊框架分解的 XHTML 1.0 Strict DTD。
XHTML 2.0
[開發中]是對 XHTML 的重寫,沒有考慮與 HTML 的向后兼容。這種想法差不多就是為 Web 編寫一種全新的內容語言,學習過去的經驗而又不束縛于過去。其中大的變化有:
- 取消了
<br/>
、
<img/>
以及其他認為過于面向表示的元素
- 取消 HTML 風格的表單,改為支持 XForm(本系列文章
前已述及)
- 取消 HTML 風格的鏈接改為 HLink(本系列文章中
前已述及)
- 用 XML Event 代替許多 JavaScript 驅動的動態任務
- 用 XFrame 代替 HTML 風格的框架
更重要的是,XHTML 2.0 做了許多擴展,增強了作者表達內容結構和含義的能力。打破向后兼容性引起了爭議。一些評論者認為保持 (X)HTML 的名稱只修改版本號會造成混亂。其他人則說這些修改非常必要,而 XHTML 實際上仍然是一種
可擴展超本文標記語言,因此保留原來的名稱非常合適。
XHTML 常常和其他嵌入格式一起使用,如 MathML、RDF、SVG、SMIL 和 VoiceXML(后面都將予以介紹)。這種混合文檔稱為
多模的或者
非單體的。W3C、ISO 以及其他組織正投入巨大的努力鼓勵對這種文檔的強力支持。
推薦的入門參考和教程
參考資料和其他資源
Docbook
Docbook
原來是一種流行的 SGML 格式,用于編纂書籍和文檔,尤其是帶有較多技術特性的文檔。后來增加了一個 XML 版本,
DocBook XML V4.2[OASIS
委員會規范]是最新的成果。Docbook
非常流行,得到了許多工具的支持,其中很多工具非常成熟。它作為避免混合表示問題與內容格式的一個范例而受人尊敬。最近,一些開發人員開始抱怨它從過去的
版本繼承了太多的負擔,紛紛討論(甚至包括它的主要開發者 Norm Walsh)為這種格式重新開發一種新的、不向后兼容的版本。
Text Encoding Initiative (TEI)
甚
至比 Docbook 更古老,這種文檔格式在某種程度上與 Docbook
的應用范圍類似,區別在于它通常處理的是人文學科的文本而非技術文本。TEI 本身不是一種 SGML 或 XML
應用,而是一組用于構造語言(DTD)的指導原則。最常用的 TEI 變體是 TEI Lite[社區標準]。TEI 以其復雜性馳名,這在一定程度上限制了它被大量采用,但是它得到了很好的維護,并在一些社區中有狂熱的用戶。
推薦的入門參考和教程
參考資料和其他資源
-
DocBook.org基本上是關于 Norman Walsh 所著
DocBook: The Definitive Guide(O'Reilly & Associates, 1999) 一書的站點。它把全書的內容都放在了網上,并作了很好的鏈接,這是關于 DocBook 各個方面的很好很詳細的參考。
-
DocBook Wiki是關于這種語言的信息和討論的協作空間。
XSL-FO
Extensible Stylesheet Language Formatting Objects (XSL-FO)
[W3C
推薦標準]是一種使用 XML 定義的表示語言。(注意,鏈接規范的標題是 "Extensible Stylesheet Language
(XSL)",但內容事實上只包括 XSL 的格式化對象方面。)XSL-FO 是一種 XML
格式,可被任何用戶代理用于按照開發人員給定的精確規范呈現內容。它的角色類似于 Web 用戶界面中的 XHTML,
但是更加復雜,以便表達適用于打印形式的格式化細節。這些細節和級聯樣式表(CSS——本系列文章 前已述及)中所規定的沒有什么不同,但是在 XSL-FO 中,這些細節構成了這種標記語言本身的一個實例,而不是呈現單個標記的指令。
XSL-FO 常用作
XSLT(本系列文章
前已述及)的輸出格式。事實上,最初 XSLT 和 XSL-FO 是一個系統,稱為 XSL,但是工作組明智地將這兩個部分分成了兩個不同的規范。有多種開放源代碼的或者商業化的工具可以將 XSL-FO 轉化成
TeX、Adobe 的
PDF以及其他適于打印和排版的(非 XML)輸出格式。這種應用模式使 XSL-FO 非常流行,但是 XSL-FO 一直希望成為 WYSIWYG 工具或者類似工具的原生呈現格式,它的這種應用也開始受到推動。
XSL-FO 1.1[開發中]是這種語言的升級,增加了注釋、索引、書簽之類的特性,并增強了圖像的處理能力。
推薦的入門參考和教程
參考資料和其他資源
- ZVON 提供了一個
XSL FO 參考,勾勒了元素之間的一些關系,但是沒有深入每種元素的語義。
- Dave Pawson 的
XSL FAQ探討了 XSL-FO 以及 XSLT 和 XPath。
SVG
Scalable Vector Graphics (SVG) 1.1
[W3C 推薦標準]是一種描述二維圖像的語言。它主要是一種
向量圖形語言,盡管也支持一些
光柵圖
形特性。SVG 的非凡雄心是提供一種實用的、靈活的、使用(以冗長聞名的)XML 表示的圖像格式,而且在這點上做的很成功。SVG
的特性包括:嵌套轉換、剪輯路徑、alpha 蒙板、光柵過濾效果、模板對象,當然還有可擴展性。SVG
也支持動畫、縮放和移動視圖、各種圖形原語、分組、腳本、超鏈接、結構化元數據、CSS、一種專用的 DOM 超集(DOM 和 CSS
前已述及),并且很容易嵌入其他 XML 文檔。SVG
的一些設計決策經歷了不很激烈的爭論,其中包括向量路徑在單個屬性中使用空格分隔的數字列表表示,但是總體上 SVG
已經成為應用最廣泛的并受到熱烈歡迎的一種 XML 應用。該規范已經被 翻譯成了多種語言。
SVG 1.1 是對
SVG 1.0[W3C 推薦標準]的更新,增加了一些新特性,也包括一些更正。最大的區別是 SVG 1.1 以類似 XHTML 1.1+ 的方式進行了模塊化。這種模塊化使得 SVG 能夠擴展甚至精簡,就像
Mobile SVG Profiles: SVG Tiny and SVG Basic[W3C 推薦標準]那樣。后者定義了 SVG 模塊的精簡集,適用于移動電話和 PDA。
SVG 1.2[開發中]致力于增加許多新工具,使 SVG 不僅作為一種圖像格式,而且成為具有廣泛應用前景的平臺。
推薦的入門參考和教程
參考資料和其他資源
VoiceXML
Voice Extensible Markup Language (VoiceXML) Version 2.0
[開發中]是一種創建音頻、語音和電話應用程序的語言。它包含的音頻對話框具有以下特點:語音合成、數字音頻、聲音識別和電話音質撥號輸入和話音輸入錄制。它尋求把基于 Web 的開發和內容傳遞的優勢帶入
交互式語音響應應用程序中。VoiceXML 是
W3C Speech Interface Framework[開發中]的一部分,后者還包括其他的標準,由于這些標準與電話行業的界限非常模糊,這里就不討論了。VoiceXML 2.0 標志著 VoiceXML 規范從
VoiceXML Forum轉向 W3C,前者仍然在努力改進這種技術。關于 VoiceXML 已經有了
一些專利聲明,其中一些意味著 VoiceXML 用戶將面臨版權和許可費的問題。
推薦的入門參考和教程
參考資料和其他資源
MathML
Mathematical Markup Language (MathML) 2.0
[W3C
推薦標準]是一種 XML 語言,按照該規范的說法,其目的是“促進數學和科學內容在 Web
上,以及其他應用程序如計算機代數系統、打印排版及語音合成中的使用和重用。MathML
可用于對能夠高質量顯示的數學符號表示編碼,也可用于為語義起著更重要作用的應用程序對數學內容編碼,如科學軟件或語音合成。”MathML
常用于在教育、科學論文、工業規范、規章內容等領域中表示等式、公式或者類似的信息。這個版本對 MathML 1.01[W3C 推薦標準]增加了一些相對較新的特性。MathML 經常和 XHTML、SVG 以及其他應用一起使用。
推薦的入門參考和教程
參考資料和其他資源
Synchronized Multimedia Integration Language (SMIL)
SMIL 2.0
[W3C
規范],按照 W3C 的說法,“支持簡單地編輯交互式[音頻/視頻]演示文稿。SMIL
通常用于[‘豐富媒體’或多媒體]演示文稿,其中集成了流式音頻和視頻、圖像、文本或者任何其他媒體類型。SMIL是一種簡單易學的類 HTML
語言,許多 SMIL 演示文稿都是使用簡單的[文本編輯器]編寫的?!盨MIL 是 W3C Synchronized Multimedia activity的一個產品,已經升級到了
SMIL 1.0[W3C 推薦標準],增加了和動畫、元數據、內容控制、鏈接、定時與同步、事件處理、過渡效果等有關的特性。
推薦的入門參考和教程
參考資料和其他資源
RDF
差不多在 W3C 致力于以 XML 為代表的下一代標記技術的同時,它也開始了下一代 Web 資源形式化描述技術的研究。
Resource Description Framework (RDF)[W3C 推薦標準]是一種模型,用于描述一組 Web 資源聲明。這些聲明被概念化為
三元組,每一個都包含
主語(一個 URI——本系列文章
前已述及)、
謂詞(也是一個 URI)和
對象(一個 URI 或字面數據值)。要理解這種聲明的意義,可以想一想描述 Web 頁面的 HTML
meta
標簽。如果套用在 RDF 上,主語就是 Web 頁面本身的 URI,謂詞是一個標準 URI
表示一般的描述,而對象就是描述的實際文本。通過大量使用 URI,RDF
希望盡量減少這些聲明成分標識的歧義,從而更加形式化以便于機器處理。RDF 能否實現這一目標還存在爭議,但是 RDF
以其非?;钴S的社區和范圍廣泛的工具而知名。
RDF 是 W3C
Semantic Web activity的支柱;
Semantic Web是
Web 的一種視像,不僅僅是內容的表示,還包括內容的注釋以幫助表達它的含義。比如,在 Semantic Web 中描述 Web
資源時,可以區分 "python"(一種蛇)和 "python"(一種計算機編程語言)這樣的概念。RDF 標準化由大量規范組成,包括:
Web Ontology Language (OWL)
[W3C 推薦標準]是 RDF 的一個應用,通常用 RDF/XML 編碼,增加了豐富的詞匯表可用于對 RDF 資源進行正式分類和歸納。
推薦的入門參考和教程
參考資料和其他資源
XML Topic Maps
Topic Maps
[ISO 國際標準,編號 13250]提供了組織信息的一個系統,在某些方面是與 RDF 競爭的一種 Semantic Web 技術。具體而言,
XML Topic Maps[ISO
13250 的一部分]是 Topic Maps 一種 Web 友好的版本,使用 XML 語法,并以 URI 作為標識符。與 RDF
相似,Topic Maps 定義了一種類似圖的模型,但更細微的差別和這樣一個事實有關,即 Topic Maps
的一個重要規定是實際概念與其計算機表示的區分。Topic Maps 的這種做法是 Semantic Web
的一種基本工具,還是增加了不必要的復雜性,在 Topic Maps 與 RDF 支持者之間的這種爭論永遠不會劃上句號。XML Topic
Maps 使用了一種非常清晰的 XML 語法,這種語法基于 XLink(本系列文章 前已述及)。
推薦的入門參考和教程
參考資料和其他資源
只是淺嘗輒止
在本系列文章中,在有限的空間中選擇哪些內容進行討論讓我煞費苦心。很多信息不可能包含進來,尤其是關于 XML 應用的這篇文章。XML
的一個優點同時也是禍根,它讓每個人都可以很容易地定義自己的語言。目前存在的難以計數的詞匯表都可以稱為這種或那種形式的標準。在形形色色的目標之間,
我主要把目光放在那些最流行、采用最廣泛的那些標準上。
您還可以找到關于正式商業文檔交換的許多標準,要了解這些數不清的選擇,您可以看看下面列出的
參考資料,既有私有的也有標準的。在我的
Thinking XML專欄
中也討論了許多這樣的標準。
下一篇文章是本系列的最后一篇文章,我將對講述過的內容進行比較,并一一列出以便交叉參考。
參考資料
關于作者