<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Vincent.Chan‘s Blog

    常用鏈接

    統(tǒng)計

    積分與排名

    網(wǎng)站

    最新評論

    XML 標準概覽: 第 2 部分::XML 處理標準

    級別: 中級

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

    2004 年 2 月 01 日

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

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

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

    第一篇文章中,我主要討論了核心 XML 技術。(關于各種標準開發(fā)團體和規(guī)范分類的概述,請參閱 文章的側欄。)本文中我將討論和開發(fā)人員處理 XML 有關的標準。下一篇文章中將介紹選擇的一些最重要的 XML 應用(即詞匯表)。

    XSLT

    Extensible Stylesheet Language Transformations (XSLT) 1.0 [W3C 推薦標準]是一種轉換語言,描述從輸入 XML 文檔到輸出樹的轉換。比如,輸出樹可以是 HTML 文檔的形式也可以是另一種 XML 格式。因此,XSLT 可以作為把 XML 呈現(xiàn)為遺留瀏覽器顯示格式的語言,也可以保持格式不變作為對 XML 文件操作的語言。轉換本身使用一種專門的詞匯表定義為 XML 文檔。使用XPath( 前文 已述)訪問原文檔和生成表達處理。專門的指令建立處理規(guī)則(XSLT 是一種聲明性語言)并控制輸出樹的創(chuàng)建。 XSLT 1.0 是一種非常成功的語言,涵蓋了多數(shù)常用的 XML 處理任務。如果熟悉 XML,學習 XSLT 的基礎并不難,但精通這門語言還是需要很大的努力。它有一種設計很好的擴展機制。它的聲明性處理模型使代碼很容易維護和重用。把 XML 文檔鏈接到它的 XSLT 樣式表文檔的標準方式在 Associating Style Sheets with XML documents, Version 1.0[W3C 推薦標準]中定義。XSLT 規(guī)范被 翻譯成了各種不同的語言。

    如前所述,XSLT 有一種很好的擴展機制,允許您使用自己選擇的語言定義另外的功能。但更好的是,您甚至不必去編寫擴展,因為別人已經(jīng)替您做了。 EXSLT[社區(qū)規(guī)范]是這類擴展的一個標準集,采用了隱藏實現(xiàn)的定義方式。EXSLT 試圖囊括通常需要的多數(shù)擴展,比如日期處理、正則表達式和數(shù)學操作。許多 XSLT 實現(xiàn)都實現(xiàn)了一個或多個 EXSLT 模塊。

    XSLT 2.0 [開發(fā)中]根據(jù)收集的 XSLT 1.0 使用經(jīng)驗提供了一些重要的改進,但缺點是對 XPath 2.0 的密切依賴,我認為后者存在根本上的缺陷(請參閱 第 1 部分)。

    推薦的入門參考和教程

    參考資料和其他資源

    • ZVON 提供了一個 XSLT Reference
    • Dave Pawson 的 XSL FAQ談到了 XSLT 和 XPath 以及 XSL-FO(本系列文章后面將述及)。
    • TopXML 分類提供了 100 多個 XSLT 樣式表的例子
    • Jeni Tennison 以其對 XSLT 奧秘清晰而深刻的闡述而知名,她的 XSLT 頁面是常見 XSLT 問題非常棒的參考。




    回頁首


    SAX

    Simple API for XML (SAX) [社區(qū)規(guī)范]是一種事件驅動的 API。XML 標記的不同部分(如起始和結束標簽、文本、實體)觸發(fā)特殊的事件,開發(fā)人員為這些事件注冊處理程序代碼。然后,解析器根據(jù)輸入的 XML 發(fā)出事件流,處理程序代碼依次處理這些事件。

    SAX 的創(chuàng)立基本上是一個馬拉松式的過程,從 1997 年后期由 XML-DEV 郵件列表 發(fā)起,長期以來這個郵件列表一直是 XML 專家的主要據(jù)點。David Megginson 領導了這個討論組,造就了最成功的 XML 研究項目之一,沒有任何大公司或標準團體的資助。在 SAX 之前,每種解析器都通過自己私有的 API 在 XML 結構與處理程序代碼之間通信,SAX 提供了重要的統(tǒng)一性。通常提供 SAX 驅動程序的解析器都把底層的解析器事件轉化成 SAX 標準事件,以支持代碼的移植。SAX 最初的想法是用 Java 語言開發(fā),但已經(jīng)普及到多種語言和環(huán)境,盡管有時候它的以 Java 為中心的特點增加了移植的復雜性。SAX 目前處在第二代,包括 XML 名稱空間處理和相對于文檔結構可以選擇的某些事件報告。

    在主流語言中,基于事件的接口通常使用 回調函數(shù)實現(xiàn),這是一種在 GUI 之類的編程中常見的方式。在面向對象語言中,回調函數(shù)通常是對象的注冊方法,使用多態(tài)匹配方法名和處理程序代碼,并在兩次回調之間通過封裝在處理程序中管理狀態(tài)。基于事件編程的整個模型被稱為 推式模型,背著多數(shù)程序員都難以掌握的名聲。但是,多數(shù)被認為容易編程的模型都需要對文檔進行隨機訪問,從而造成效率低下,因此 SAX 享有處理 XML 最有效的標準方式的美譽,如果不是最容易的方式的話。

    推薦的入門參考和教程

    參考資料和其他資源

    • XML.org 的 SAX 專欄提供了很有用的資源鏈接。
    XML 的編程語言

    從一開始,XML 就受到了程序員的廣泛關注。這里對使用各種語言處理 XML 的程序員列出了一些有用的資源:

    Java 技術: IBM alphaworksXML 頁面 Apache XML 頁面Sun 的 Java 技術和 XML 社區(qū)

    C/C++:C/C++ 開發(fā)人員:充實您的 XML 工具箱” ( developerWorks,2001 年 9 月)

    Python: Special Interest Group for XML Processing in Python; XML.com 上的“ Python & XML”專欄; “ The State of the Python-XML Art, 2003”;“ Uche Ogbuji 關于在 Python 中處理 XML 的 Akara 網(wǎng)站

    Perl:Perl 開發(fā)人員:充實您的 XML 工具箱” ( developerWorks,2001 年 6 月); Perl-XML Project;XML.com 上的“ Perl & XML”; XMLperl.com

    其他: PHPXML Classes < rubyXML/> XML 與 Scheme





    回頁首


    DOM

    Document Object Model (DOM) [W3C 推薦標準]是一種 XML 文檔對象模型,可用于直接訪問 XML 文檔的各個部分。在 DOM 中,文檔被模型化為一棵樹,其中每個 XML 語法成分(如元素和文本內容)都用一個節(jié)點表示。DOM 是一種 API,允許您在這種樹中導航,從父節(jié)點移動到子節(jié)點或者在兄弟節(jié)點之間移動,并利用特定節(jié)點類型的特性(比如,元素可以有屬性,而文本節(jié)點有文本數(shù) 據(jù))。DOM 被設計成語言中立的。使用了 Object Management Group(對象管理組,OMG)的 CORBA Interface Definition Language (接口定義語言,IDL)[ISO 國際標準,編號 14750]表示 DOM 節(jié)點和支持接口。

    DOM 作為一種對象模型,最初實際上是用于在 Web 瀏覽器中標準化 HTML 和 XML 對象的腳本操作。作為獨立的編程 API 使用時,有時候這種轉換非常笨拙。DOM 的演進經(jīng)過了幾個級別,每個版本都在上一級別的基礎上增加了新的功能。Level 1 包括了基本的功能,Level 2 增加了對名稱空間的支持、一個 UI 事件模型、迭代器等等。Level 3 增加了用于從 XML 文檔文件中加載和保存的 API,集成了 XPath,增加了對驗證的支持等等。

    DOM 一般比 SAX 更容易掌握,因為它沒有涉及到回調和復雜的狀態(tài)管理,但是 DOM 實現(xiàn)通常在內存中保存所有的 XML 節(jié)點,對于較大的文檔效率可能非常低。盡管許多語言都有 DOM 實現(xiàn),DOM 還是努力保持語言的中立性。特定語言的擁護者常常抱怨 DOM 難以使用,不能利用任何語言的特長。結果涌現(xiàn)了許多針對特定語言的樹處理 API。

    推薦的入門參考和教程

    參考資料和其他資源





    回頁首


    XAPI

    XML Database API (XAPI) [開 發(fā)中]是一種用于 XML 數(shù)據(jù)庫的獨立于供應商和語言(盡管是面向對象的)的 API。XML:DB 是致力于 XML 數(shù)據(jù)庫管理工具的開發(fā)人員興趣小組。XAPI 涵蓋了 XML 數(shù)據(jù)庫中數(shù)據(jù)的存儲、檢索、修改和查詢,以及對事務管理的支持。它類似于 ODBC 和 JDBC。和 DOM 一樣,XAPI 也指定使用 OMG IDL,并按照功能級別組織。Level 0 是基本的 API,Level 1 增加了 XPath 支持(XPathQueryService)。XAPI 在原生 XML 數(shù)據(jù)庫管理工具中得到了廣泛的實現(xiàn),尤其是開源工具如 Apache XIndice 和 SleepyCat Berkeley XML DB。盡管如此,除了 XML:DB 規(guī)范本身外,這方面的 Web 資源還很少。 API Use Cases提供了一些在 Java 語言中使用這種 API 的很粗略的例子。





    回頁首


    XUpdate

    XUpdate [開 發(fā)中]定義了修改 XML 文檔中的數(shù)據(jù)的更新工具。盡管 XUpdate 是由 XML:DB 小組定義的,但 XUpdate 被設計成能夠處理常規(guī)的 XML 文檔和存儲在數(shù)據(jù)庫中的 XML,甚至虛擬的 XML 數(shù)據(jù)模型。XUpdate 是一種類似 XSLT 的 XML 詞匯表,但是比 XSLT 簡單得多,總體上是一種很容易理解的詞匯表。和 XSLT 相似,它也使用 XPath 訪問修改的文檔,并使用專門的元素定義輸出操作。XUpdate 也有廣泛的實現(xiàn),特別是在開源工具中,如 XML DBMS 和 XML 比較和修補工具。 XUpdate Use Cases草案也是很好的 XUpdate 入門參考。

    推薦的入門參考和教程





    回頁首


    XQuery

    XQuery 1.0: An XML Query Language [開 發(fā)中]是一種用于查詢 XML 數(shù)據(jù)源——文檔和數(shù)據(jù)庫——的規(guī)范。XQuery 是一種非常復雜的編程語言,組成了 XPath 的一個超集。XQuery 是與 XPath 2.0 一起開發(fā)的,同樣因為其復雜性而備受爭議,其實許多爭論是不必要的。XQuery 1.0/XPath 2.0 系統(tǒng)包括令人生畏的一大批規(guī)范定義,包括語義、語法以及核心函數(shù)庫:

    • XML Query Use Cases [開發(fā)中]通過帶有 XQuery 例子的預想應用場景把握著 XQuery 的發(fā)展方向。
    • XQuery 1.0 和 XPath 2.0 Data Model [開發(fā)中]精確定義了 XSLT 2.0 或 XQuery 處理程序可以包含的信息,以及 XSLT 2.0、XQuery 和 XPath 2.0 表達式中所有允許的值。
    • XQuery 1.0 和 XPath 2.0 Formal Semantics [開發(fā)中]在其數(shù)據(jù)模型的基礎上,給出了 XPath 2.0 和 XQuery 1.0 規(guī)范中每種表達式精確的、形式化的含義。
    • XPath 2.0 [開發(fā)中]定義了 XPath 2.0 的核心語法。
    • XQuery 1.0 和 XPath 2.0 Functions and Operators [開發(fā)中]定義了表達式中常用的處理任務。
    • XQuery 1.0 [開發(fā)中]定義了 XQuery 1.0 的核心語法。
    • XML Syntax for XQuery 1.0 (XQueryX) [開發(fā)中]提供了一種可選的 XQuery 的 XML 表示。
    • XSLT 2.0 和 XQuery 1.0 Serialization [開發(fā)中]定義了數(shù)據(jù)模型中的值在 XML、HTML 和文本中是什么樣子,如何在處理程序輸出中替換 XSLT 中的節(jié)。
    • XSLT 2.0 [開發(fā)中]不是 XQuery 家族的直接成員,但是和 XPath 2.0 與 XQuery 1.0 密切相關,并且完全依賴于前者。

    推薦的入門參考和教程

    • Howard Katz 撰寫的“ XQuery 簡介”介紹了 XQuery,并提供了一些例子,根據(jù)最近的工作草案作了更新( developerWorks,2003 年 9 月)。
    • Nicholas Chase 的“ 使用XML Query 處理XML”講授 XQuery 并考察了 XPath 2.0 中的變化。它討論的是較早版本的工作草案,但是因為此后的變化很小,我還是推薦這個教程( developerWorks,2002 年 9 月)。
    • Per Bothner 撰寫的文章“ What is XQuery?”,最近的 修訂論及最新的草案。

    參考資料和其他資源

    • xquery.com是一個很好的 XQuery 資源集散站,還包括一個 Wiki,這是一種協(xié)作式的資源索引和討論網(wǎng)頁。




    回頁首


    SQL/XML

    SQL/XML [ISO 國際標準 ISO/IEC 9075-14:2003]是 SQL 標準的一個新的分支,包括大量和 XML 有關的對 SQL 的擴展。SQL/XML 最初是由“SQLX Informal Group of Companies(非正式企業(yè)組織)”開發(fā)的,其中包括 IBM,后來交給了美國國家標準局(ANSI——維護 SQL 的標準組織)中的委員會。SQL/XML 所涉及到的范圍包括(引自 Andrew Eisenberg 與 Jim Melton):

    • SQL 數(shù)據(jù)(具體而言就是行和表,以及視圖和查詢結果)以 XML 形式表示(或者相反)的規(guī)范。
    • 與 SQL 架構和 XML 架構之間的映射有關的規(guī)范,可能包括實現(xiàn)任何已有 XML 架構和 SQL 架構之間的映射。
    • SQL 架構在 XML 中表示的規(guī)范。
    • SQL 動作(插入、更新、刪除)表示的規(guī)范。
    • 和 SQL 一起使用時 XML 的消息規(guī)范。

    SQL/XML 與 XQuery 很少交叉,兩個標準中同時涉及的部分一般能一起工作。

    參考資料和其他資源





    回頁首


    CSS

    Cascading Style Sheets (CSS) [W3C 推薦標準]是一種將表示樣式應用于標記的系統(tǒng)。最知名的是在樣式化 HTML Web 頁中的應用,但尤其是從 CSS Level 2 發(fā)布以來,它也非常適合在 Web 或者其他媒介上表示 XML 文檔。把 XML 文檔映射到輸出結構通過使用 display 屬性完成。XML 文檔鏈接到它的 CSS 樣式表文檔的標準方式在 Associating Style Sheets with XML documents Version 1.0[W3C 推薦規(guī)范]中定義。

    推薦的入門參考和教程





    回頁首


    XForms

    XForms 1.0 [W3C 推薦標準],不要與名稱相同的 XWindows GUI 庫混淆,這是用于 XML 數(shù)據(jù)處理的 Web 表單規(guī)范,可通過不同的媒介用于不同的平臺。XForms 希望把表單的用途和表示分開。它把表單做什么與表單看起來怎么樣分離開。它是一種 XML 詞匯表,可用于開發(fā)表單 UI 以操縱 XML 內容。XForms 最初是 XHTML 家族的一部分,但已經(jīng)完全獨立出來了。盡管其復雜程度超出了需要,但看來是一種能夠把混亂的 Web 表單世界帶入正軌的技術。

    推薦的入門參考和教程

    • Micah Dubinko 寫的“ What Are XForms?”對這種技術作了一般性的介紹。
    • Joel Rivera 和 Len Taing 撰寫的“ 準備使用 XForms”,通過幾個詳細的例子介紹了 XForms( developerWorks,2002 年 9 月)。
    • Nicholas Chase 的“ 理解 XForms”更深入地分析了一系列的例子( developerWorks,2002 年 12 月)。




    回頁首


    SOAP

    SOAP [W3C 推薦標準](盡管使用大寫,但已經(jīng)成為正式的名詞而不再是縮寫詞了)是一種協(xié)議,在使用底層 Internet 協(xié)議連接的系統(tǒng)之間使用 XML 通信。一些用戶認為 SOAP 是 XML Web 服務的 基礎,這是一組技術的統(tǒng)稱,用于管理和組織使用 XML 數(shù)據(jù)格式和 Internet 通信協(xié)議連接的系統(tǒng)之間交互的一組技術。SOAP 最初是在數(shù)量不多、臨時拼湊的個人之間開發(fā)的,這些人來自各種不同的公司,其中包括 IBM。之所以能夠得到迅速普及,是因為它提供了與早期對 XML 消息的研究成果相似的功能,并且有更牢固的體系結構基礎和更多的商業(yè)支持。SOAP 的開發(fā)交給了 W3C,W3C 開發(fā)了 SOAP 1.2,在體系結構上作了許多改進,但是也對許多爭議作了折衷。SOAP 定義了一種 XML 信封格式,可以包含偽 XML 載荷(SOAP 消息的實際有效載荷不能使用 XML 的所有功能,這是引起激烈爭論的一個焦點)。

    Web 服務不一定必須使用 SAOP,許多人鼓吹直接在 HTTP 上交換原始 XML 文檔的觀點,這是松散地聚在“ REpresentational State Transfer (REST)” 大旗下的人吹捧的一種方法。REST 本身是它的架構師之一,Roy Fielding,為一種 Web 體系結構方式所取的名字。REST 風格 Web 服務的鼓吹者抱怨 SOAP 太復雜、XML 有效載荷像是雜耍,而且沒有充分利用 Web 的基本能力。在 SOAP 的提倡者中,最近的重點已經(jīng)從 SOAP 的 RPC 源頭轉移到了所謂的 實文檔方式的 SOAP。在 RPC 方式中,傳輸?shù)臄?shù)據(jù)使用專門的 XML 符合格式(稱為 SOAP 編碼)編組成離散的數(shù)據(jù)類型。在實文檔方式中,XML 負荷由更自然的 XML 格式組成,通常更具有描述性,更便于人類閱讀。

    SOAP 大廈

    建立在 SOAP 基礎上的大批標準——許多已經(jīng)超出了本文中所能討論的范圍。關于這些標準的信息有一些很好的資源:

    至今仍然廣泛使用的一種 SOAP 先驅是 XML Remote Procedure Calls (XML-RPC)[社 區(qū)規(guī)范]。XML-RPC 定義了使用 XML 編碼通過 HTTP 通信的過程調用。之所以流行至今是因為它的簡單性(整個規(guī)范打印出來不超過 10 頁),而且現(xiàn)在的多數(shù)語言和許多應用程序框架,都有標準的或者容易應用的 XML-RPC 實現(xiàn)。它確實有一些很突出的不足,包括非常原始的數(shù)據(jù)類型化以及缺乏對字符編碼的支持(對于使用 XML 而言,這真是一個令人吃驚的瑕疵)

    推薦的入門參考和教程





    回頁首


    WSDL

    根據(jù)正式的定義, Web Services Description Language (WSDL) Version 1.2[開 發(fā)中]是“一種描述網(wǎng)絡服務的 XML 格式,它把網(wǎng)絡服務描述為對消息的一組端點操作,消息可以包含面向文檔的信息或者面向過程的信息。”它在一系列抽象層次上定義了 Web 服務中端到端通信的組件。WSDL 最初是作為 IBM 和 Microsoft 的合作項目發(fā)起的,但在 WSDL 1.2 的開發(fā)是已經(jīng)交給了 W3C。WSDL 通常伴隨著 SOAP 作為 Web 服務核心技術,但也可用于描述 SOAP 之外的其他協(xié)議。

    推薦的入門參考和教程

    • IBM developerWorks上的一篇文章討論了舊版本的 WSDL,即 Bilal Siddiqui 撰寫的“ 使用 WSDL 部署 Web 服務”(2001 年 11 月)。




    回頁首


    后續(xù)內容

    本文綜述了和應用程序開發(fā)有關的最重要的 XML 標準。下一篇文章中,我將分析最重要的通用 XML 詞匯表。





    回頁首


    參考資料





    回頁首


    關于作者

    Author photo

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

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

    主站蜘蛛池模板: 久久久久久久岛国免费播放| 毛片基地免费观看| 亚洲电影在线免费观看| 妞干网免费视频观看| 一本久久A久久免费精品不卡| 亚洲精品无码成人片久久| 国产精品视频免费观看| 青草青草视频2免费观看| 亚洲国产成人久久精品动漫| 成年大片免费视频| 一级毛片a免费播放王色| 亚洲成年人电影在线观看| 九月婷婷亚洲综合在线| 99精品视频在线观看免费专区| 亚洲乱色熟女一区二区三区蜜臀| 亚洲精品无码乱码成人| 永久免费视频v片www| 香港a毛片免费观看| 男人扒开添女人下部免费视频| 亚洲男女性高爱潮网站| 亚洲人成影院在线观看| 思思99re66在线精品免费观看| 拍拍拍无挡免费视频网站| 亚洲人成未满十八禁网站| 亚洲男人都懂得羞羞网站| 免费国产成人午夜私人影视 | 亚洲精品无码国产片| 国产AV无码专区亚洲AV毛网站| 永久黄网站色视频免费观看 | 国产AV无码专区亚洲AV男同| 日本无吗免费一二区| 19禁啪啪无遮挡免费网站| 中文字幕版免费电影网站| 亚洲成a∧人片在线观看无码| 久久精品国产亚洲AV麻豆网站| 国产亚洲精品拍拍拍拍拍| 国产18禁黄网站免费观看| 欧洲精品成人免费视频在线观看| 免费成人高清在线视频| 国产精品免费在线播放| 黄人成a动漫片免费网站|