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