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

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

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

    Vincent.Chan‘s Blog

    常用鏈接

    統計

    積分與排名

    網站

    最新評論

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

    級別: 中級

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

    2004 年 2 月 01 日

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

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

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

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

    XSLT

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

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

    XSLT 2.0 [開發中]根據收集的 XSLT 1.0 使用經驗提供了一些重要的改進,但缺點是對 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) [社區規范]是一種事件驅動的 API。XML 標記的不同部分(如起始和結束標簽、文本、實體)觸發特殊的事件,開發人員為這些事件注冊處理程序代碼。然后,解析器根據輸入的 XML 發出事件流,處理程序代碼依次處理這些事件。

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

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

    推薦的入門參考和教程

    參考資料和其他資源

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

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

    Java 技術: IBM alphaworksXML 頁面 ; Apache XML 頁面; Sun 的 Java 技術和 XML 社區

    C/C++:C/C++ 開發人員:充實您的 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 網站

    Perl:Perl 開發人員:充實您的 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 語法成分(如元素和文本內容)都用一個節點表示。DOM 是一種 API,允許您在這種樹中導航,從父節點移動到子節點或者在兄弟節點之間移動,并利用特定節點類型的特性(比如,元素可以有屬性,而文本節點有文本數 據)。DOM 被設計成語言中立的。使用了 Object Management Group(對象管理組,OMG)的 CORBA Interface Definition Language (接口定義語言,IDL)[ISO 國際標準,編號 14750]表示 DOM 節點和支持接口。

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

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

    推薦的入門參考和教程

    參考資料和其他資源





    回頁首


    XAPI

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





    回頁首


    XUpdate

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

    推薦的入門參考和教程





    回頁首


    XQuery

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

    推薦的入門參考和教程

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

    參考資料和其他資源

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




    回頁首


    SQL/XML

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

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

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

    參考資料和其他資源





    回頁首


    CSS

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

    推薦的入門參考和教程

    • Simon St. Laurent 撰寫的“ On Display: XML Web Pages with Mozilla”是一篇較老的文章,但使用 Mozilla 瀏覽器(包括與 MSIE 5 的比較)的例子較好地說明了其中的基本原理。
    • ZVON 的“ CSS 2 Tutorial”講解如何使用 CSS 2 顯示 XML 文檔。
    • Dr. David Mertz 的 developerWorks技巧文章,“ 技巧: 使用 CSS2 顯示 XML 文檔”,對詳盡的例子作簡要的說明(2001 年 12 月)。




    回頁首


    XForms

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

    推薦的入門參考和教程

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




    回頁首


    SOAP

    SOAP [W3C 推薦標準](盡管使用大寫,但已經成為正式的名詞而不再是縮寫詞了)是一種協議,在使用底層 Internet 協議連接的系統之間使用 XML 通信。一些用戶認為 SOAP 是 XML Web 服務的 基礎,這是一組技術的統稱,用于管理和組織使用 XML 數據格式和 Internet 通信協議連接的系統之間交互的一組技術。SOAP 最初是在數量不多、臨時拼湊的個人之間開發的,這些人來自各種不同的公司,其中包括 IBM。之所以能夠得到迅速普及,是因為它提供了與早期對 XML 消息的研究成果相似的功能,并且有更牢固的體系結構基礎和更多的商業支持。SOAP 的開發交給了 W3C,W3C 開發了 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 的提倡者中,最近的重點已經從 SOAP 的 RPC 源頭轉移到了所謂的 實文檔方式的 SOAP。在 RPC 方式中,傳輸的數據使用專門的 XML 符合格式(稱為 SOAP 編碼)編組成離散的數據類型。在實文檔方式中,XML 負荷由更自然的 XML 格式組成,通常更具有描述性,更便于人類閱讀。

    SOAP 大廈

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

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

    推薦的入門參考和教程





    回頁首


    WSDL

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

    推薦的入門參考和教程

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




    回頁首


    后續內容

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





    回頁首


    參考資料





    回頁首


    關于作者

    Author photo

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

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

    主站蜘蛛池模板: xvideos永久免费入口| 亚洲乱码一区av春药高潮| 另类图片亚洲校园小说区| 成人免费在线观看网站| 中文字幕亚洲综合久久综合 | mm1313亚洲国产精品无码试看| 青苹果乐园免费高清在线| 中文字幕乱码亚洲精品一区| 无码人妻一区二区三区免费手机| 亚洲www在线观看| 永久黄网站色视频免费观看| 国产精品亚洲综合| 国产亚洲精品自在线观看| 国产免费久久久久久无码| 久久精品国产精品亚洲色婷婷| 香蕉免费一区二区三区| 亚洲综合免费视频| 精品国产免费一区二区| 男女超爽视频免费播放| 伊伊人成亚洲综合人网7777| 久久久久久久99精品免费| 亚洲成年人电影网站| 日韩视频免费在线| jizz在线免费播放| 亚洲电影免费观看| 日韩中文无码有码免费视频| 九九免费精品视频在这里| 亚洲卡一卡2卡三卡4卡无卡三| 免费黄色网址网站| 真人无码作爱免费视频| 亚洲日韩激情无码一区| av无码国产在线看免费网站| 亚洲国产成人久久精品大牛影视| 亚洲区不卡顿区在线观看| 57pao国产成永久免费视频| 亚洲av无码一区二区三区在线播放| 久久亚洲国产精品五月天婷| 亚洲免费网站在线观看| 一级一级毛片免费播放| 亚洲国产成人手机在线电影bd| 亚洲精品WWW久久久久久|