Vincent.Chan‘s Blog

          常用鏈接

          統(tǒng)計

          積分與排名

          網(wǎng)站

          最新評論

          XML 標準概覽: 第 1 部分::核心標準——XML 大世界的基石

          級別: 初級

          Uche Ogbuji, 首席顧問, Fourthought, Inc.

          2004 年 2 月 01 日

          XML 世界非常龐大,而且還在不斷成長,存在大量不同的標準和技術(shù),它們以復雜的方式互相影響。新手很難確定哪些是 XML 最重要的方面,用戶也難以跟蹤這個領域出現(xiàn)的新生事物和變化。在這一系列的文章中,Uche Ogbuji 提供了 XML 標準的指南,并為進一步的學習推薦了廣泛的資料。

          XML 變得越來越強大,得到了迅速的發(fā)展。它已經(jīng)證明自己是一種非常有價值的技術(shù),但可能也是一種令人害怕的技術(shù),如果考慮到掛在“XML”一詞下面不斷變化的各個部分。在這一系列的文章中,我將簡述我認為最重要的 XML 技術(shù),討論它們?nèi)绾卧?XML 世界中更大范圍內(nèi)的彼此融合。為了進一步評估和學習使用各種技術(shù),我還推薦了一些教程和其他有用的參考資料。

          這里介紹的所有技術(shù)都是 標準,盡管這個詞本身就有點捉摸不定。標準有各種各樣的形式,而且在同一個領域中常常有多種標準互相競爭。我按照實踐的方法把標準定義為:被不同的供應商大量采用的或者有影響的、獨立于供應商的組織推薦的規(guī)范。

          在第一篇文章中,我主要討論我認為是核心的 XML 技術(shù)。這些技術(shù)構(gòu)成了 XML 文檔中所表達的內(nèi)容的基礎。在以后的文章中,我將討論和開發(fā)人員處理 XML 有關的標準,和選擇一些最重要的 XML 應用(即詞匯表)。

          XML

          XML 1.0 (第 2 版) [W3C 推薦標準]當然是衍生出 XML 技術(shù)大樹的主干。它在 Unicode [Unicode Consortium 技術(shù)報告和 ISO 標準]的基礎上定義了文本格式的嚴格規(guī)則,以及 Document Type Definition (文檔類型定義,DTD)驗證語言。該規(guī)范的當前版本(第 2 版)包含了規(guī)范的歷次修訂。它被 翻譯 成多種語言,盡管英語版本是唯一的 規(guī)范版本,就是說只有這個版本被認為具有標準的效力。

          XML 1.1 [開發(fā)中]是改變了 結(jié)構(gòu)良好的 XML 文檔的定義的第一個修訂版。主要的變化是修訂了 XML 規(guī)范中對字符的處理,使其更自然地適應 Unicode 規(guī)范的變化,并通過引用 Character Model for the World Wide Web(萬維網(wǎng)字符模型)1.0 [開發(fā)中],提供了不同 Unicode 版本字符的規(guī)范化。XML 1.1 還增加了行結(jié)束字符列表,新增加的 NEL 用于在 IBM 大型機系統(tǒng)中表示行結(jié)束(EOL)。這種變化存在爭議,有人認為對大型機用戶帶來的有限好處不值得做這種基礎性的改變。還有一些其他的爭論,因為一些評論者發(fā)現(xiàn)所有的修改都太穩(wěn)妥了,在 XML 版本變換中不會造成各種可能的互操作性問題。

          XML 是基于 Standard Generalized Markup Language(標準通用標記語言,SGML)的,后者由 ISO 8879:1986 [ISO 標準]定義。它在很大程度上簡化了 SGML,包括一些調(diào)整使其更適合于 Web 環(huán)境。

          推薦的入門參考和教程

          • 以 Doug Tidwell 的文章“ XML 入門” ( developerWorks, 2002 年 8 月)作為起點。
          • ZVON 的 XML 教程DTD 教程有多種語言的版本。
          • Ken Sall 所著的 XML Family of Specifications: A Practical Guide中的 Excerpts一章提供了簡單的介紹。
          • W3Schools 和 W3C 沒有任何從屬關系,提供了包羅萬象的 XML 教程
          • Mike Brown 的“ skew.org XML 教程”是對 XML 的重新介紹,強調(diào)了編碼的問題,突出了其他文獻中經(jīng)常掩蓋的一些主題。

          參考資料和其他資源





          回頁首


          Catalogs

          XML Catalogs [OASIS 委員會規(guī)范]定義了一種格式,指導 XML 處理程序把 XML 實體標識符解析成實際的文檔。比如,給定一個 DTD 的系統(tǒng)標識符和公共標識符, 實體目錄可用于規(guī)定 XML 處理程序從哪里加載 DTD。 系統(tǒng)標識符通常使用 Uniform Resource Identifiers(統(tǒng)一資源標識符,URI)給出,后者受 RFC 2396: Uniform Resource Identifiers [IETF RFC]的控制。URI 僅僅是對 Web 瀏覽器或者類似工具中所用的一般 URL 的擴展。所有的 URL 都是 URI,但是 URI 還包括 URN,URN 由 RFC 2141: Uniform Resource Names [IETF RFC]控制,這是使用名稱而不是位置標志 Web 資源的一種方式(請參閱“ The URN Charter”)。 公共標志符通常用 SGML 中定義的 Formal Public Identifiers(正式公共標志符,F(xiàn)PI)指定。目錄可能在這樣的情況下使用:所用的計算機不能訪問 URL 所指定的網(wǎng)絡資源,或者企業(yè)希望用當?shù)匕姹敬嫱獠抠Y源。

          XML 目錄本身是一個 XML 文檔,不過是一種用于 SGML 的較老的格式,而 XML 使用更簡單文本定義了一種目錄格式: Entity Management, OASIS Technical Resolution 9401:1997 [OASIS 標準]。這種格式經(jīng)常被稱為 OASIS Open Catalog

          推薦的入門參考和教程

          目錄處理通常作為 XML 解析器完整的一部分提供,但是有一些介紹性的資料專門討論使用目錄解析實體:

          多種風格的標準

          有幾種組織和非正式的團體參與了為 XML 用戶指定標準的過程。在 參考資料中提供了大多數(shù)鏈接,但這里我要解釋一下在本文中用于修飾標準的一些詞匯

          W3C 正式發(fā)布的 推薦標準,在技術(shù)上講僅僅是關于進一步標準化的建議,但是由于該組織自身的權(quán)威性往往成為 事實上的標準。首先是 工作草案,然后成為 候選推薦標準(提出來供開發(fā)人員通過實現(xiàn)進行測試的最終形式),接下來是 提議的推薦標準(準備進行推薦標準的待定 W3C 投票),最后規(guī)范進入推薦標準狀態(tài)。

          國際標準化組織(ISO) 可能是世界上最權(quán)威的標準體。它的許多標準在相關行業(yè)中都具有法律效力。

          結(jié)構(gòu)化信息標準推進組織(OASIS) 大約從 SGML 的時代開始在結(jié)構(gòu)上就發(fā)生了變化,但工作的成果是類似的。過去 OASIS 所稱的 Technical Resolutions(技術(shù)解決方案)現(xiàn)在變成了 Committee Specifications(委員會規(guī)范),目的和 W3C 推薦標準是類似的。

          Internet 工程任務組(IETF) 是一種依靠基層力量發(fā)達昌盛的組織模型,同時也嘗試引入正式組織的一些節(jié)制手段。差不多能夠訪問 Internet 的任何人都可以提交 Internet 草案,并建議作為一種可能的標準。一個指導小組對草案進行了評估,并可能推薦作為 Request for Comment(請求注釋,RFC)發(fā)布。RFC 可以標記為 Standards Track RFC(標準跟蹤 RFC)或者直接成為 Standard RFC(標準 RFC),但是成為 RFC 的多數(shù)文檔都經(jīng)過詳細的考察,并且經(jīng)常已經(jīng)很好地實現(xiàn)過。

          最后還要向 XML 社區(qū)致意,他們創(chuàng)建非正式的但是重要的標準的努力填補了大型組織留下的空白。SAX、RDDL 和 EXSLT 是一些非常著名的例子。OASIS 通過努力已經(jīng)成為吸引這類標準爭鳴的陣地,但是愿意通過郵件列表打造一種事實標準的仍然不乏其人。





          回頁首


          XML Namespaces

          Namespaces in XML 1.0 [W3C 推薦標準]提供了一種統(tǒng)一命名 XML 文檔中的元素和屬性的機制。一些這些簡單的例子可以解釋 XML NameSpace 幕后的動機:假設您有一個 XML 詞匯表,其中名為“head”和“body”的元素作為解剖學描述的標記,但是您希望在文檔中嵌入 XHTML (參見后述)片段。XHTML 也定義了“head”和“body”元素。如何從同名的宿主詞匯表元素中區(qū)分 XHTML 元素呢?使用 XML Namespaces 就可以為每種詞匯表指定一個標記。在 XML 名稱空間中,每種詞匯表被稱為一個名稱空間,有專門的語法表示詞匯表標記。每個元素或?qū)傩悦己鸵粋€名稱空間聯(lián)系,這樣就能把解剖學上的“head”和 XHTML “head”區(qū)分開來。在 XML 專家中,對 XML 名稱空間曾經(jīng)存在爭議,因為對 XML 處理模型增加了一點復雜性,一些人認為這樣做帶來的好處不能抵消引起的問題。無論如何,XML 名稱空間已經(jīng)在 XML 用戶中得到了廣泛的認可,差不多所有的 XML 處理技術(shù)都能處理 XML 名稱空間。

          Namespaces in XML 1.1 [開發(fā)中]是一次更新,結(jié)合了勘誤表與補充,其中包括對國際化 URI 的支持。

          經(jīng)常提出的和 XML 名稱空間有關的一個問題是,應該標識哪一類資源的名稱空間 URI。Jonathan Borden 和 Tim BrayOne 領導的 XML 專家組提出了 Resource Directory Description Language (資源目錄描述語言,RDDL)作為在名稱空間中打包信息的一種標準。RDDL 使用 XHTML 提供詞匯表的簡單描述,用內(nèi)嵌的 XLink(將在本文中討論)提供到重要資源的指針,幫助理解和處理這種名稱空間。 RDDL 2.0[開發(fā)中]是一個升級版本,尋求通過兩種選擇代替 XLink: Resource Description Framework(資源描述框架,RDF)(后面討論)以及在郵件列表上為 W3C Technical Architecture Group(技術(shù)體系結(jié)構(gòu)組,TAG)開發(fā)的替代 XML 鏈接建議。

          推薦的入門參考和教程

          上面提到的一些 XML 1.0 教程涉及到了 XML 名稱空間。此外還有:

          參考資料和其他資源





          回頁首


          XML Base

          XML Base [W3C 推薦標準]提供了一種聯(lián)系 XML 元素和 URI 方法,以便更精確地規(guī)定在相關的 XML 處理活動中如何解析相對 URI。比方說,如果一個 XML 元素包含使用相對 URL 的鏈接,要鏈接的絕對 URL 就要通過參考該元素的基 URL 來決定。多數(shù) XML 處理程序都對組成文檔的每個 XML 實體假定一個基 URL,可以使用 XML Base 替換這種默認設置。

          推薦的入門參考和教程





          回頁首


          XInclude

          XML Inclusions (XInclude) 1.0 [開發(fā)中]提供了一種合并 XML 文檔的系統(tǒng)。XInclude 通常用于希望將 XML 文檔分成多個可管理的段的情況。可以根據(jù)需要分割文檔,然后再使用 XInclude 把文檔合并回去。 外部已解析實體是一種 XML 1.0 結(jié)構(gòu),允許從單獨的文件中加載文檔的一部分,可以完成類似的功能,從某種程度上說 XInclude 是一種不必要的規(guī)范。XInclude 提供了一些特殊的便利之處,比如在包含文檔時可以選擇包含文檔的哪些部分。

          推薦的入門參考和教程





          回頁首


          XML Infoset

          XML Information Set [W3C 推薦標準]也稱為 XML Infoset,定義了一種抽象的方式把 XML 文檔描述為一系列帶有特定屬性的對象,即 信息項。這種抽象數(shù)據(jù)集結(jié)合了在 XML 1.0、XML Namespaces 和 XML Base 中定義的 XML 文檔的各個方面。XML Infoset 被用作其他幾種規(guī)范的基礎,這些規(guī)范試圖把 XML 文檔分解成一些組成對象的集合。

          推薦的入門參考和教程





          回頁首


          Canonical XML ("c14n")

          Canonical XML Version 1.0 [W3C 推薦規(guī)范]是一種生成 XML 文檔物理表示的標準方法,稱為規(guī)范化形式,用于統(tǒng)一 XML 語法中不影響語義的幾種變體。比如,在 XML 中屬性的順序并不重要,因此如果一個文檔中所有的屬性都按照字母順序排列,而另一個相同的文檔以不同的方式保存屬性,盡管其物理表示不同,但對于 XML 1.0 而言兩個文檔是等價的。這有時候會造成應用中的問題。比如,如果希望用數(shù)字加密的簽名保護文檔不被篡改,改變屬性的順序會破壞簽名,盡管對 XML 1.0 來講文檔實際上并沒有改變。解決的辦法是在簽名、文本比較或者其他此類操作之前把文檔轉(zhuǎn)化成規(guī)范的形式(這個過程稱為“規(guī)范化(c14n)”)。這樣就可以保證正確地接納 XML 1.0 中認為不重要的變動。

          有時候需要比較或者簽署的 XML 實際上是一個更大的文檔的一部分。即便如此,c14n 通常也需要解決這種問題以便處理名稱空間聲明這樣的細節(jié)。如果需要把 c14n 嚴格限制在一個文檔子集中,就必須使用相關的算法 Exclusive XML Canonicalization Version 1.0[W3C 推薦標準]。





          回頁首


          XPath

          XML Path Language (XPath) 1.0 [W3C 推薦標準]是處理 XML 文檔部分的一種語法和處理模型。它包括一些通用表達式語言的特性,被設計成一種小型的語言,以便在 XML 系統(tǒng)中進行應用程序中立的處理。比如,可以使用 XPath 定位文檔中所有的節(jié)標題元素。

          除了 XML 1.0 本身,XPath 可能是最成功的 XML 技術(shù)。它是 XSLT(本系列文章中間加以論述)的核心,后者是一種非常成功的 XML 轉(zhuǎn)換語言,差不多所有的平臺上都提供它處理 XML。 XPath 2.0[開發(fā)中]增加了新的特性,包括對 W3C XML Schema(后面將討論)的支持和許多新的核心功能。這是一個飽受爭議的規(guī)范,因為它的龐大增加了復雜性;許多用戶和實現(xiàn)者(包括我自己)都說除非 XPath 2.0 得到很大的簡化,否則就避免使用它。

          推薦的入門參考和教程

          基本上所有關于 XSLT 的介紹都同時涉及到 XPath。這里列出專門討論 XPath 的教程:





          回頁首


          XPointer

          XPointer Framework [W3C 推薦標準]定義了一種語言,可用語音用 XML 文檔中的片段。對于使用帶有井號(#)的 URL 鏈接到 XML 文檔中的特定片段,您可能已經(jīng)非常熟悉了。在鏈接和引用 XML 文檔時,XPointer 帶來了類似但是更廣泛的能力。這種框架可以和 xpointer() scheme[開發(fā)中]、 element() scheme[W3C 推薦標準]以及 xmlns() scheme[W3C 推薦標準]一起使用,這些標準定義了在 XPointer 框架中表達所關心的文檔片段的具體要求。

          XPointer 經(jīng)歷了一段艱難的歷程,飽受非議。XPointer 工作組本身的成員開發(fā)了一種相反的建議, FIXptr [社區(qū)標準]。幾種替代的 XPointer 方案包括 the xpath1() scheme[IETF Internet 草案]。

          推薦的入門參考和教程

          在成為推薦標準之前,XPointer 進行了非常大的修改,所以要注意有許多教程所討論的是舊版本。





          回頁首


          XLink

          XML Linking Language (XLink) 1.0 [W3C 推薦標準]提供了一種在 XML 文檔中表示鏈接的通用框架。需要鏈接的超文本是 Web 的基礎,加入完善的鏈接能力一直被認為是 XML 的基石。事實上,XLink 最初被稱為 "XML part 2"。不幸的是實踐證明,為 XML 定義一種鏈接系統(tǒng)和為 HTML 這樣的靜態(tài)詞匯表定義鏈接系統(tǒng)相比要遠遠復雜得多。XLink 的開發(fā)經(jīng)歷了漫長的過程,遭受了種種非議。比如,XHTML (本系列文章將討論)的開發(fā)者決定不使用 XLink 而創(chuàng)建他們自己的系統(tǒng),稱為 HLink [開發(fā)中]。即使到現(xiàn)在,XLink 已經(jīng)完成兩年了,對它的采用仍然非常緩慢。。

          無論如何,XLink 都非常重要,處在許多 XML 相關項目中的中心位置,與基本的、單向的 HTML 鏈接相比提供了更豐富的鏈接功能。XLink 頁提供了這種鏈接( 簡單鏈接),同時還提供了更復雜的可以有多個端點的鏈接( 擴展鏈接),甚至還有在鏈接的文檔中沒有表達而是在專門的中心文檔(稱為 鏈接庫)中表示的鏈接。

          推薦的入門參考和教程

          您可能會找到討論該語言的舊的、廢止的草案的 XLink 教程。下面是最新的教程:

          參考資料和其他資源

          • ZVON 也提供了一份“ XLink Reference”。
          • Bob DuCharme 在他的文章中“ XLink: Who Cares?”中討論了 XLink 的歷史并研究了它的實現(xiàn)。




          回頁首


          RELAX NG

          RELAX NG [OASIS 委員會規(guī)范和 ISO 草案標準]是一種 XML 模式語言,即一種可用于定義和限制 XML 詞匯表的語言。最初的 XML 模式語言是 XML 1.0 自己定義的文檔類型定義(DTD)。但是,一些人不喜歡 DTD,因為它丑陋的語法、表達文本和標記結(jié)構(gòu)的局限性,并且難以處理 XML Namespaces。出現(xiàn)了幾種新的 XML 模式語言以取代或者增強 DTD,其中包括 RELAX NG,以其簡單性和表達能力而聞名。RELAX NG 的核心規(guī)范定義了架構(gòu)的 XML 語法,此外 RELAX NG Compact Syntax [OASIS 委員會規(guī)范]還為 RELAX NG 架構(gòu)定義了一種簡單的文本語法。人們期望這種文本語法作為補充添加到 ISO 標準中。RELAX NG 是稱為 Document Schema Definition Languages(文檔模式定義語言,DSDL)的整個 ISO XML 模式處理系統(tǒng)的研究工作的一部分。

          推薦的入門參考和教程

          • 閱讀 Nicholas Chase 的入門教程“ 理解 RELAX NG”,它可以幫助您迅速領略 RELAX NG 的簡單性和強大功能,包括它的完全基于 XML 的語法和緊湊語法( developerWorks,2003 年 12 月)。
          • David Mertz 在 developerWorks 上的“XML 問題”專欄,在其系列文章“使用 RELAX NG 反擊”中專門討論了 RELAX NG:
            • 第 1 部分考察了 RELAX NG 的一般語法,并涉及到數(shù)據(jù)類型化(2003 年 3 月)。
            • 第 2 部分通過解決幾個附加的語義問題繼續(xù)前面的討論,并考察了可以使用 RELAX NG 的工具(2003 年 3 月)。
            • 第 3 部分詳細探討了 RELAX NG 緊湊語法,并揭示了緊湊語法和 XML 語法之間的完全對應關系(2003 年 5 月)。
          • RELAX NG 的正式教程 核心和它的 緊湊語法
          • ZVON 提供了一個混合教程 RELAX NG and W3C XML Schema language(本系列文章將討論)。

          參考資料和其他資源





          回頁首


          W3C XML Schema

          XML Schema Part 1: Structures XML Schema Part 2: Datatypes[W3C 推薦標準]定義了另一種 XML 模式語言。 第一部分用于約束文檔的結(jié)構(gòu),第二部分則用于約束簡單元素和屬性的內(nèi)容。W3C XML Schema (WXS) 由于過于復雜和表達能力不足而受到了批評,結(jié)果造成與其他語言如 RELAX NG 的競爭。逐漸地,人們開始僅僅使用最適合自身的模式語言,而根據(jù)需要求助于轉(zhuǎn)換工具從一種形式轉(zhuǎn)化成另一種形式,這類工具的大量涌現(xiàn)給人留下了深刻的印 象。許多其他的規(guī)范已經(jīng)采用了 WXS DataTypes 規(guī)范,盡管也有開發(fā)其他數(shù)據(jù)類型系統(tǒng)的呼聲。工作組已經(jīng)開始 WXS 1.1 的研發(fā)工作。

          推薦的入門參考和教程

          • Nicholas Chase 的 developerWorks教程“ 驗證 XML”同時涉及到 DTD 和 WXS(2003 年 8 月)。
          • W3Schools 有一個 WXS 教程.
          • W3C XML Schema 工作組在 XML Schema Part 0: Primer中對這種技術(shù)作了透徹而淺顯的介紹。

          參考資料和其他資源





          回頁首


          Schematron

          Schematron Assertion Language 1.5 [社 區(qū)標準和草案 ISO 標準]是一種模式語言,使用了不同于 DTD、RELAX NG 和 WXS 的方法。在 Schematron 中,您需要對要檢查的 XML 文檔登記一組規(guī)則,而不是繪制出試圖表達的 XML 格式從根節(jié)點到葉子的整個樹結(jié)構(gòu)。這就使得 Schematron 不僅可以作為一種獨立的、非常有用的模式語言,也可以作為其他模式語言的補充。Schematron 可以表達我所討論的其他語言所不能表達的約束,因此經(jīng)常與其他語言協(xié)同使用。

          推薦的入門參考和教程

          參考資料與其他資源





          回頁首


          后續(xù)內(nèi)容

          本文中綜述了最重要的核心 XML 標準。在第 2 部分,我將介紹對于在應用程序處理中使用 XML 的人而言非常重要的標準。





          回頁首


          參考資料





          回頁首


          關于作者

          Uche Ogbuji 的照片

          Uche Ogbuji 是 Fourthought Inc.的顧問和共同創(chuàng)始人,該公司是專為企業(yè)知識管理提供 XML 解決方案的軟件供應商和咨詢公司。 Fourthought 開發(fā)了 4Suite,這是一個用于 XML、RDF 和知識管理應用程序的開放源代碼平臺。Ogbuji 先生是一位出生于尼日利亞的計算機工程師和作家,他現(xiàn)在美國科羅拉多州的博耳德生活和工作。可以通過 uche.ogbuji@fourthought.com 和 Ogbuji 先生聯(lián)系。

          posted on 2006-03-18 21:27 Vincent.Chen 閱讀(334) 評論(0)  編輯  收藏 所屬分類: AJAX

          主站蜘蛛池模板: 松原市| 孝感市| 鄂托克旗| 社旗县| 松原市| 黄陵县| 开平市| 梁河县| 万全县| 福鼎市| 平安县| 定襄县| 建宁县| 甘孜| 白银市| 济源市| 樟树市| 安丘市| 明光市| 南康市| 宣化县| 新晃| 桃园市| 玛纳斯县| 八宿县| 汶川县| 仪征市| 海林市| 台中市| 青川县| 乌兰浩特市| 祁阳县| 和平区| 青铜峡市| 宁明县| 湟中县| 平遥县| 富锦市| 泸州市| 邯郸市| 土默特左旗|