• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            牽著老婆滿街逛

            嚴(yán)以律己,寬以待人. 三思而后行.
            GMail/GTalk: yanglinbo#google.com;
            MSN/Email: tx7do#yahoo.com.cn;
            QQ: 3 0 3 3 9 6 9 2 0 .

            [轉(zhuǎn)載]C/C++ 開發(fā)人員:充實(shí)您的 XML 工具箱(初涉XML的值得一讀)

            C/C++ 開發(fā)人員:充實(shí)您的 XML 工具箱
            作者:Rick Parrish

            提交者:eastvc 發(fā)布日期:2003-10-23 22:16:03
            原文出處:http://www-900.ibm.com/developerWorks/cn/xml/x-ctlbx/index.shtml


            本文針對(duì)哪些不熟悉 XML 開發(fā)的 C 和 C++ 程序員,概述了為 XML 開發(fā)作準(zhǔn)備而裝配的工具。工具表概述了常規(guī) XML 工具,如 IDE 和模式設(shè)計(jì)器、解析器、XSLT 工具、SOAP 和 XML-RPC 庫(kù),以及其它可以在 C 和/或 C++ 中使用或者實(shí)際上以 C 和/或 C++ 編寫的庫(kù)。本文包括了關(guān)于在 Windows、Unix 和 Linux 上安裝開放源碼庫(kù)的建議,還有關(guān)鍵 XML 術(shù)語(yǔ)的簡(jiǎn)要詞匯表。

            似乎滿眼望去,一些新的以源碼形式發(fā)布的與 XML 相關(guān)的工具都是用 Java 編寫。盡管 Java 在 XML 競(jìng)技場(chǎng)中占有明顯優(yōu)勢(shì),許多 C/C++ 程序員還是在進(jìn)行 XML 的開發(fā),而且現(xiàn)在有許多 XML 工具可供 C 和 C++ 程序員使用。我們將面對(duì) XML 庫(kù)問(wèn)題,如驗(yàn)證、模式和 API 模型。接著,我們將研究常規(guī) XML 工具的集合,如 IDE 和模式設(shè)計(jì)器。最后,我們將用一個(gè)列表進(jìn)行總結(jié),并且討論可以在 C 和/或 C++ 中使用或者實(shí)際上以 C 和/或 C++ 編寫的庫(kù)。

            在本文中,將跳過(guò)關(guān)于使用 XML 的爭(zhēng)論;我假設(shè)您已經(jīng)擁有充分的理由來(lái)等待掌握這種技術(shù)。另外,我們將把 XML 的更詳細(xì)說(shuō)明留給參考資料中的背景資源講述。只要說(shuō) XML 是數(shù)據(jù)交換的標(biāo)準(zhǔn)(不僅是文件格式)就夠了。數(shù)據(jù)可以是以 XML 格式的應(yīng)用程序文件形式來(lái)進(jìn)行交換的,或者通過(guò)網(wǎng)絡(luò)連接進(jìn)行交換,該網(wǎng)絡(luò)連接只是因在線事務(wù)結(jié)束或網(wǎng)絡(luò)連接關(guān)閉而遭到放棄之前存在短暫片刻。

            此外,本文并不是評(píng)價(jià)工具的比較性評(píng)論。我的目的是說(shuō)明您可能需要的工具類型,并向您指出可能的候選工具。您仍需要根據(jù)項(xiàng)目需要來(lái)研究、測(cè)試和比較工具特征,以裝配最終的工具箱。

            兩套工具
            要將 XML 合并到自己的軟件項(xiàng)目中,在您的工具箱里應(yīng)該有兩套工具。第一套是方言設(shè)計(jì)器(或者更適當(dāng)?shù)慕蟹ㄊ恰澳J皆O(shè)計(jì)器”)。第二套工具包括將解析和 XML 生成特性添加到應(yīng)用程序的軟件庫(kù)。

            設(shè)計(jì)您自己的 XML 方言
            XML 方言只是一組特殊的 XML 標(biāo)記,以及一些關(guān)于如何組合這些標(biāo)記的規(guī)則。目前,指定或定義 XML 方言的兩種主要方式是通過(guò)文檔類型定義(DTD)或 XML 模式。我將把這兩者都稱作模式

            您的項(xiàng)目域也許已經(jīng)有了一個(gè)為您設(shè)計(jì)的特定模式。如果沒(méi)有,您可以使用純文本編輯器創(chuàng)建自己的模式。更精細(xì)的方法是使用可以檢查語(yǔ)法的真正 方言設(shè)計(jì)器。(當(dāng)以后嘗試使用錯(cuò)誤的模式來(lái)驗(yàn)證 XML 數(shù)據(jù)時(shí),該模式不會(huì)起作用。)

            設(shè)計(jì)工具
            目前,大多數(shù)程序員的文本編輯器 — 尤其是在 IDE 中找到的文本編輯器 — 擁有正規(guī)的宏和模板支持,可用于某些特性,如語(yǔ)法突出顯示和自動(dòng)完成部分輸入的字或短語(yǔ)。因此,我省略了關(guān)于任何只執(zhí)行語(yǔ)法突出顯示和自動(dòng)完成的 XML 編輯器的討論。Microsoft Word 或 Emacs 宏就可以實(shí)現(xiàn)這些特性,因此“XML 編輯器”應(yīng)該有更多特性。

            表 1 中顯示的工具分為三種類別:

            • IDE(集成開發(fā)環(huán)境,即瑞士軍刀方法)
            • 模式敏感的 XML 編輯器(補(bǔ)充在模式或 DTD 中找到的許可標(biāo)記結(jié)構(gòu)和屬性)
            • 模式設(shè)計(jì)器(用于編寫自己的模式或 DTD)


            因?yàn)楸?1 中的所有工具都運(yùn)行應(yīng)用程序,所以它們適合于所有 XML 開發(fā)人員 — 不僅是那些使用 C++ 的開發(fā)人員(與本文中其它表中列出的工具不同)。

            表 1. 各種平臺(tái)的方言設(shè)計(jì)工具
            產(chǎn)品供應(yīng)商描述許可證平臺(tái)
            Turbo XMLTIBCO/ExtensibilityXML 模式/DTD 設(shè)計(jì)器和 IDE商業(yè)Java、Win32
            KomodoActive StateXML 編輯器和 IDE商業(yè)Linux、Win32、其它
            XML SpyAltova用于 XML 編輯和模式設(shè)計(jì)的 IDE商業(yè)Win32
            XML NotepadMicrosoftXML 編輯器免費(fèi)Win32
            Morphon XMLLunatech Research模式敏感的 XML 數(shù)據(jù)編輯器商業(yè)Java
            XED愛丁堡大學(xué)模式敏感的 XML 數(shù)據(jù)編輯器非商業(yè)Win32、Linux、Unix
            XeenaIBM alphaWorks模式敏感的 XML 數(shù)據(jù)編輯器免費(fèi)試用/商業(yè)Mac、Unix、Win32
            Visual XMLPierlou模式敏感的 XML 數(shù)據(jù)編輯器非商業(yè)Java
            NetpaddPhillip LenssenMicrosoft 的 XML Notepad 的替代品非商業(yè)Win32
            XMetalSoftquadDTD 敏感的 XML 編輯器商業(yè)Win32
            MerlotChannelpoint可視 XML 編輯器;支持 DTD 插件非商業(yè)Java
            XML ValidatorElCel Technologies命令行 XML 驗(yàn)證工具非商業(yè)Win32
            XML CanonElCel Technologies通過(guò)將 XML 數(shù)據(jù)與 DTD 合并來(lái)生成規(guī)范的 XML非商業(yè)Win32

            C 和 C++ 工具
            本文的其余部分提供了通過(guò)軟件庫(kù)向 C/C++ 程序員添加 XML 功能的基礎(chǔ)。在本文的下一部分中,您將發(fā)現(xiàn)可以找到更多的命令行實(shí)用程序,軟件庫(kù)包含了它們作為測(cè)試和/或樣本程序。例如,Transformiix 可以用作一個(gè)庫(kù)、Perl 模塊或命令行工具。

            發(fā)放許可證

            在所有工具表中,商業(yè)許可證表示必須購(gòu)買該工具,才能將它用于產(chǎn)品環(huán)境中。試用版本(有時(shí)間限制或者禁用了主要特性)通常可供下載和評(píng)估。所有其它工具都有非商業(yè)許可證,不需要支付費(fèi)用就能使用,但如果將它們用于商業(yè)項(xiàng)目中,請(qǐng)確保您將遵守許可證條款進(jìn)行使用。例如,使用任何開放源碼作為共享庫(kù)或 DLL,應(yīng)符合這些 XML 庫(kù)附帶的開放源碼許可證協(xié)定(通常是 LGPL)。在表中,當(dāng)可能不完全安裝工具就能確定許可證類型時(shí),就會(huì)指定非商業(yè)許可證的類型;該表使用 非商業(yè)來(lái)指定許可證條款比較模糊的免費(fèi)軟件。

            常用的開放源碼是 Apache、GPL、BSD 和 LGPL。并不允許在商業(yè)軟件包中包含 GPL 代碼,而 Apache 和 LGPL 代碼可以在銷售的軟件中使用。這四個(gè)產(chǎn)品都限制在沒(méi)有得到許可的情況下在派生產(chǎn)品中使用它們的名稱。

            到現(xiàn)在為止,我嘗試盡量少用 XML 相關(guān)的術(shù)語(yǔ)。可是,在您進(jìn)一步閱讀之前,如果還不熟悉 XML 基礎(chǔ)知識(shí),您也許應(yīng)該瀏覽在 XML 術(shù)語(yǔ)側(cè)欄中定義的術(shù)語(yǔ)。這些術(shù)語(yǔ)將幫助您理解本文的其余部分,并且在您親自深入研究所提到的工具和庫(kù)時(shí)幫助挑出它們的特征。

            解析器
            一旦您擁有了 DTD 或模式以及與其相配的 XML 文檔,就需要一個(gè)解析器來(lái)讀取并解釋該 XML 文檔。表 2 概述了 C/C++ 開發(fā)人員的解析器庫(kù)。可是,在開始研究表中的網(wǎng)格時(shí),需要一點(diǎn)背景知識(shí)。

            驗(yàn)證
            XML 解析器有兩種形式:驗(yàn)證和非驗(yàn)證。您需要哪一種呢?如果您不使用正式的 DTD 或模式,驗(yàn)證特性對(duì)于您來(lái)說(shuō)并不重要。如果您已經(jīng)或者正在計(jì)劃使用 DTD 或模式,您也許會(huì)首選驗(yàn)證解析器。(在這種情況下,我建議您還要學(xué)習(xí)如何閱讀和手工寫 DTD/模式,這樣當(dāng)發(fā)生驗(yàn)證問(wèn)題時(shí),您就可以處理錯(cuò)誤。有時(shí),錯(cuò)誤在 DTD/模式中,因此您可以調(diào)試 DTD/模式文件和 XML 數(shù)據(jù)。)

            解析器 API 模型
            用于將軟件與 XML 解析器結(jié)合的兩種常用 API 模型是:文檔模型和事件模型。文檔 API 模型對(duì) XML 數(shù)據(jù)進(jìn)行解析以生成一個(gè)對(duì)象。對(duì)象將文檔的內(nèi)容抽象成樹結(jié)構(gòu)。應(yīng)用程序?qū)@個(gè)樹結(jié)構(gòu)對(duì)象進(jìn)行操作。事件 API 模型使用回調(diào)機(jī)制向應(yīng)用程序通報(bào) XML 數(shù)據(jù)的結(jié)構(gòu)。事件/回調(diào)通常在進(jìn)行解析時(shí)發(fā)生。

            API 標(biāo)準(zhǔn):DOM 和 SAX
            一般解析器 API 模型已經(jīng)被進(jìn)一步改進(jìn)成特定 API 標(biāo)準(zhǔn)。W3C 已經(jīng)推薦 DOM(級(jí)別 1 和 2,級(jí)別 3 正在草擬中)作為標(biāo)準(zhǔn)化文檔 API 模型。SAX 雖然不是 W3C 項(xiàng)目,但它已經(jīng)占有了事實(shí)上的標(biāo)準(zhǔn)事件 API 模型的地位。

            W3C 標(biāo)準(zhǔn)
            當(dāng)比較解析器和其它 XML 工具中的特性時(shí),請(qǐng)尋找 W3C 推薦的和正在形成的規(guī)范的支持,如名稱空間、XPath、XLink、XInclude 和 XInfoset。請(qǐng)記住,XML 技術(shù)成熟得非常快,對(duì)第一級(jí)規(guī)范(如 DOM)的支持也許缺少了該規(guī)范第二級(jí)中引入的重要功能。如果最新規(guī)范形式的功能對(duì)于您的項(xiàng)目很重要,請(qǐng)相應(yīng)地選擇工具。

            閱讀下表
            在表 2 中,“事件”欄指定了支持一個(gè)推或事件模型 API(如 SAX)的解析器。“文檔”欄指定了支持拉或文檔模型 API(如 DOM)的解析器。與前面一樣,該表列出了商業(yè)和非商業(yè)工具(請(qǐng)參閱側(cè)欄發(fā)放許可證以獲取關(guān)于軟件許可證的詳細(xì)信息)。

            表 2. C/C++ 開發(fā)人員的解析器
            庫(kù)供應(yīng)商事件文檔特點(diǎn)許可證
            expatJames Clark/expat 小組本機(jī)與 SAX-帶有本機(jī) API 和 SAX 封裝器的、非常快速的推模型解析器。LGPL(免費(fèi))
            libxmlGnomeSAXDOM非常強(qiáng)壯;SAX 與 DOM 封裝器;執(zhí)行 DTD 驗(yàn)證LGPL(免費(fèi))
            MSXMLMicrosoftSAXDOMWin32 的 Microsoft XML 庫(kù)EULA(免費(fèi))
            XercesApache Software FoundationSAXDOM執(zhí)行 SAX 及 DOM 級(jí)別 1 和 2;DTD 驗(yàn)證;增加的 XML 模式Apache(免費(fèi))
            XTLVivid CreationsSAXDOM帶 SAX 和 DOM 的基于 STL 的 XML 工具箱商業(yè)
            RXP愛丁堡大學(xué)-本機(jī)驗(yàn)證以 C 編寫的了解名稱空間的 XML 解析器GPL(免費(fèi))
            XML4CIBM alphaWorksSAXDOMIBM 發(fā)起的 Xerces 的變體Apache(免費(fèi))
            Oracle XDK 8iOracleSAXDOMOracle 主辦的用于 C++ 的 XML 工具箱非商業(yè)
            Pull ParserExtreme! Lab-本機(jī)印地安那大學(xué)發(fā)起的用于 C++ 的輕量型 XML 工具箱非商業(yè)
            XML BoosterPhiDaNi Software-本機(jī)解析器發(fā)生器,生成 C 源碼解析器商業(yè)

            開放源碼前三名
            三種最流行的開放源碼 XML 庫(kù)是 expat、libxml 和 Xerces。這三者都是跨平臺(tái)的,每一種都充當(dāng) XSLT 庫(kù)實(shí)現(xiàn)的基礎(chǔ),一旦滿足了基本 XML 需要之后,它就會(huì)給您一條成長(zhǎng)途徑。

            • expat 是 James Clark 創(chuàng)始的開放源碼面向事件的 XML 解析庫(kù)。他已經(jīng)將該項(xiàng)目轉(zhuǎn)讓給了 SourceForge 中的一個(gè)小組。有一個(gè) SAX 封裝器可供使用。在許多項(xiàng)目中都可以找到 expat 解析器,如開放源碼瀏覽器 Mozilla、XSLT 處理器 Transformiix 和 RDF 工具 repat。
            • libxml 為類似于 SAX 和 DOM 的操作提供了雙重方式 API。它支持對(duì) DTD 的驗(yàn)證,并且在 Gnome 的 XSLT 處理器 libxslt 中使用。libxml 經(jīng)過(guò)重寫,已作為 libxml(2) 發(fā)布,也許還稱為 libxml2。這個(gè)庫(kù)的用戶應(yīng)該確保他們擁有了當(dāng)前版本。
            • Xerces 是非常堅(jiān)固的、擁有大量文檔的庫(kù),它充當(dāng) IBM alphaWorks XML4C 庫(kù)的基礎(chǔ)。Xerces 還用于 Apache XSLT 處理器 Xalan 中。Xerces 支持 DOM、SAX,以及對(duì) DTD 的驗(yàn)證。最新版本讀取并解釋了部分“W3C XML 模式推薦”(打算到 2001 年底實(shí)現(xiàn)完整的 XML 模式支持)。

            將這三種最流行的庫(kù)其中一種編譯并鏈接到您的項(xiàng)目毫不費(fèi)力。大多數(shù)軟件包都包括了每個(gè)平臺(tái)的詳盡說(shuō)明。這里是一些樣本安裝說(shuō)明。

            在 Windows 上構(gòu)建開放源碼庫(kù)
            在 Windows 上從頭構(gòu)建 libxml 是很簡(jiǎn)單的四個(gè)步驟:

            1. 下載源 tarball 文件。
            2. 使用諸如 Winzip 之類的程序?qū)?nèi)容解壓縮到一個(gè)目錄中。請(qǐng)確認(rèn)指示了解壓縮實(shí)用程序保留 libxml 可能需要的任何子目錄的路徑名。
            3. 定位 ./win32/dsp 子文件夾中的 libxml2.dsw 文件,并從 MS Developer Studio 中打開它。
            4. 從 DevStudio 中的頂部菜單選擇 Build All。這將構(gòu)建所有樣本和測(cè)試程序,以及運(yùn)行它們所需的 libxml DLL。


            可以使用上述步驟在 Windows 上構(gòu)建 Xerces。唯一的區(qū)別就是查找 ./c/samples/Projects/Win32/VC6 子文件夾中的 samples.dsw 工作空間文件。

            expat 已經(jīng)開始包括了 DSP 項(xiàng)目 makefile。請(qǐng)查看 libxmlwf 子文件夾。

            在 Unix 上構(gòu)建開放源碼庫(kù)
            對(duì)于在 Linux 或 Unix 上運(yùn)行的項(xiàng)目,大多數(shù)情況下,您可以將源代碼解包(untar)到一個(gè)空目錄中,設(shè)置某些選項(xiàng),然后輸入“make”來(lái)構(gòu)建共享庫(kù)。Solaris 用戶:不要忘記使用 GNU 解包實(shí)用程序。在 Slackware Linux 下的 bash shell 中,我使用以下代碼:

            tar -x 
            

            XML 和 COM
            MSXML 是 Microsoft 針對(duì) Windows 系列操作系統(tǒng)提供的專利 XML,它被實(shí)現(xiàn)成一個(gè)可腳本化的 COM 對(duì)象集合,因此可以在其它語(yǔ)言環(huán)境中出色地工作,而且提供了大量文檔。這個(gè)庫(kù)支持 DOM,而且還有一個(gè)本機(jī)面向文檔的接口。它還支持 SAX 事件。

            作為 MSXML 的替代品,“Apache XML 項(xiàng)目”的 Xerces 庫(kù)附帶了一個(gè) COM 封裝器,這可以使它在許多情況下充當(dāng) MSXML 的仿制品。Vivid Creations 在它的 XTL 庫(kù)中提供了 SAX 和 DOM API 的 COM 封裝器,該產(chǎn)品也是 MSXML 的替代品。

            XML 轉(zhuǎn)換:XSLT 和 XQuery
            轉(zhuǎn)換是 XML 發(fā)展過(guò)程中從只是在元素和屬性級(jí)別處理 XML 數(shù)據(jù)向前進(jìn)階的下一步。XML 轉(zhuǎn)換對(duì)進(jìn)入 XML 數(shù)據(jù)進(jìn)行操作,以產(chǎn)生 XML 輸出。轉(zhuǎn)換可以重新組織標(biāo)記結(jié)構(gòu)、添加/除去標(biāo)記和屬性、進(jìn)行過(guò)濾以放大 XML 數(shù)據(jù)的所選擇部分。

            XQuery 文檔將轉(zhuǎn)換過(guò)程稱作查詢,但含義是一樣的。

            XSLT 和 XQuery 是 XML 方言,用于指定如何對(duì)隨機(jī) XML 數(shù)據(jù)執(zhí)行這樣的操作。您可以編寫一個(gè)腳本文件,改用 XSLT 或 XQurey 來(lái)代替 XML,從而代替將一些 XML 數(shù)據(jù)裝入到 DOM 中,而且必須由程序操縱 DOM 版本來(lái)產(chǎn)生期望的結(jié)果。這種更通用的方法會(huì)產(chǎn)生更好的靈活性,并會(huì)縮短開發(fā)時(shí)間。現(xiàn)在,您的 Web 開發(fā)人員(他們不是 C/C++ 程序員)可以編寫自己的 XML 轉(zhuǎn)換,這可以讓 C++ 程序員來(lái)完成更復(fù)雜的工作。

            表 3. C/C++ 轉(zhuǎn)換/查詢庫(kù)
            庫(kù)供應(yīng)商特點(diǎn)許可證
            libxsltGnome構(gòu)建在 libxml 之上非商業(yè)
            XalanApache構(gòu)建在 Xerces 解析器之上Apache(免費(fèi))
            TransformiixMITRE構(gòu)建在 expat 之上的 XSLT 處理器非商業(yè)
            xsltcOliver GerardinXSLT 編譯器,產(chǎn)生 C 代碼非商業(yè)
            sablotronGinger AllianceXSL 引擎非商業(yè)

            消息傳遞:XML-RPC 和 SOAP 工具
            對(duì)本文來(lái)說(shuō),消息傳遞是指讓兩個(gè)軟件代理程序互相通信。這種消息傳遞有時(shí)稱作面向消息的中間件。(這不是類似于 AOL、MSN 或 ICQ 的消息傳遞,知道嗎?現(xiàn)在一個(gè)尚處于未完成階段的基于 XML 的即時(shí)消息傳遞協(xié)議成果稱作 Jabber。我已經(jīng)在參考資料中包含了一個(gè)鏈接以滿足您的好奇心,但再次聲明,那并不是我要在這里討論的東西。)

            使用 XML 進(jìn)行消息傳遞已經(jīng)非常流行,以至于已經(jīng)產(chǎn)生了兩個(gè)替代品:XML-RPC 和 SOAP。這些協(xié)議最顯著的特征是根據(jù)開發(fā)人員用于實(shí)現(xiàn)的工具選擇,客戶機(jī)、服務(wù)器和同級(jí)設(shè)備可能會(huì)大相徑庭。雖然所有開發(fā)人員都習(xí)慣使用他們偏愛的語(yǔ)言、開發(fā)工具箱或軟件庫(kù),但他們?nèi)匀豢梢院献鳌?/p>

            (附帶說(shuō)明:Gregor Purdy 已經(jīng)用已提議的替代方法編寫了一篇出色的 XML-RPC 評(píng)論(請(qǐng)參閱參考資料))。

            表 4 包括了用于面向消息中間件類別的一些庫(kù)。這并不是一個(gè)此類別中資源的詳盡列表,有一些新的工具正在快速發(fā)展,但它是一個(gè)好的起點(diǎn)。

            表 4. C/C++ 消息傳遞庫(kù)
            庫(kù)供應(yīng)商特點(diǎn)許可證平臺(tái)
            4S4C SOAP 服務(wù)Simon Fell開放源碼 SOAP 成果非商業(yè)Linux、Unix、Win32
            SOAP 客戶機(jī)SQL DataC++ SOAP 客戶機(jī)工具箱商業(yè)Win32
            SOAP 組件mozilla.org可腳本化 XPCOM 組件非商業(yè)許多
            XML-RPC for C/C++First PeerC 語(yǔ)言編寫的 XML-RPC 庫(kù)非商業(yè)Linux、Unix、Win32
            XML-RPC 組件mozilla.org可腳本化 XPCOM 組件非商業(yè)許多
            XML-RPC for C/C++EpinionsC 語(yǔ)言編寫的 XML-RPC 庫(kù)非商業(yè)Linux、Unix、Win32

            題外話
            這些工具應(yīng)該給您的 XML 工具箱一個(gè)很好的起點(diǎn)。如果想要推薦已經(jīng)嘗試過(guò)的其它用于 XML 的 C/C++ 工具或者要發(fā)表任何其它意見,請(qǐng)加入本文所附的討論中(請(qǐng)使用“參考資料”中的鏈接或單擊文章頁(yè)面頂部或底部的“討論”圖標(biāo))。

            XML 術(shù)語(yǔ)

            這些 XML 術(shù)語(yǔ)也許會(huì)在您理解本文中討論的庫(kù)時(shí)派上用場(chǎng):

            • 文檔模型:用于將 XML 數(shù)據(jù)當(dāng)作樹型對(duì)象進(jìn)行解析和操縱的技術(shù),也稱作“拉”模型。請(qǐng)參閱作為示例的 DOM API 標(biāo)準(zhǔn)。
            • DOM:“文檔對(duì)象模型”是 XML 文檔的一種特殊樹型結(jié)構(gòu)編程模型,W3C 將它描述成一個(gè)標(biāo)準(zhǔn)。DOM 標(biāo)準(zhǔn)目前分成三個(gè)級(jí)別。DOM 1.0 是指 DOM 級(jí)別 1.0 一致性;DOM 級(jí)別 2 是最新的規(guī)范,W3C 正將它認(rèn)可為“推薦”;DOM 級(jí)別 3 在本文創(chuàng)作時(shí)正在草擬中。
            • DTD:文檔類型定義。一種 XML 文件,定義了 XML 元素和那些元素的 XML 屬性,而且指定了如何嵌套 XML 標(biāo)記以及元素可以包含什么數(shù)據(jù)的規(guī)則。請(qǐng)參閱 Jane Fung 的XML 和 DTD 簡(jiǎn)介以獲取更多詳細(xì)信息。
            • 事件模型:用于通過(guò)使用回調(diào)或處理程序?qū)?XML 數(shù)據(jù)進(jìn)行解析的技術(shù);也稱作“推”模型。例如,請(qǐng)參閱 SAX API 標(biāo)準(zhǔn)。
            • 名稱空間:明確從不同的 DTD 或模式中標(biāo)識(shí)出 XML 標(biāo)記的方法,這樣它們可以混合在同一個(gè) XML 文檔中。RDF 非常依賴于這個(gè)特性;XML 1.0 標(biāo)記“xmlns”可以用于在 XML 文檔中定義名稱空間。
            • RDF:資源描述框架,用于將 XML 屬性數(shù)據(jù)和通常駐留在別處的信息相關(guān)聯(lián)的一種壓縮 XML 方言。您的驅(qū)動(dòng)程序的許可證就類似于描述您的 RDF XML 文件。
            • SAX:Simple API for XML 是用于 XML 解析器實(shí)現(xiàn)的標(biāo)準(zhǔn)編程接口;SAX 使用面向事件的編程模型。SAX 是由 David Megginson 最早開發(fā)的事實(shí)上的標(biāo)準(zhǔn),現(xiàn)在由 XML-dev 郵件列表維護(hù)。
            • SOAP:“簡(jiǎn)單對(duì)象訪問(wèn)協(xié)議”是類似于 XML-RPC(請(qǐng)參閱 XML-RPC)的網(wǎng)絡(luò)協(xié)議。通過(guò)使用 SOAP,應(yīng)用程序可以創(chuàng)建遠(yuǎn)程對(duì)象、調(diào)用該對(duì)象上的方法,以及檢索結(jié)果。
            • 驗(yàn)證:關(guān)于 DTD 和模式,驗(yàn)證結(jié)構(gòu)良好的 XML 文檔是否正確。
            • 結(jié)構(gòu)良好:一個(gè) XML 文檔,它的標(biāo)記和數(shù)據(jù)符合 XML 1.0 語(yǔ)法。
            • W3C:世界萬(wàn)維網(wǎng)聯(lián)盟,它已經(jīng)成為大多數(shù) XML 相關(guān)技術(shù)的重要標(biāo)準(zhǔn)主體。W3C 將最終認(rèn)可的規(guī)范稱作“推薦”(而不是標(biāo)準(zhǔn))。
            • XML 1.0:W3C 頌揚(yáng)的第一個(gè) XML 語(yǔ)法標(biāo)準(zhǔn);建立了 XML 數(shù)據(jù)的基本規(guī)則,如所有標(biāo)記都必須以斜杠(/)結(jié)束,如:,或者后跟一個(gè)結(jié)束標(biāo)記,如: close the tag on your way out
            • XML-RPC:XML 遠(yuǎn)程過(guò)程調(diào)用。XML-RPC 是用于跨網(wǎng)絡(luò)調(diào)用方法和服務(wù)的標(biāo)準(zhǔn) XML 方言;就象您認(rèn)為的那樣,XML-RPC 使用 XML 進(jìn)行客戶機(jī)和服務(wù)器之間的消息傳遞。
            • XML 模式:XML 模式是一種 W3C 推薦,它類似于 DTD,用于定義 XML 文檔的結(jié)構(gòu),但具有更好的靈活性。XML 模式使用 XML 1.0 語(yǔ)法來(lái)指定模式,這與用于 DTD 的比較早期的 SGML 語(yǔ)法相反。
            • XQuery:其部分功能類似于 XSLT,但設(shè)計(jì)得更有利于充當(dāng) XML 數(shù)據(jù)的查詢語(yǔ)言 — 類似于在關(guān)系數(shù)據(jù)庫(kù)中使用 SQL。作為規(guī)范,它還不如 XSLT 成熟,XQuery 也許會(huì)成為今后十年里的 SQL。
            • XSLT:可擴(kuò)展樣式語(yǔ)言轉(zhuǎn)換,一種用于轉(zhuǎn)換 XML 內(nèi)容的 XML 方言。將 XSLT 文件應(yīng)用于某些 XML 輸入數(shù)據(jù),以生成期望的 XML 輸出數(shù)據(jù)。

            參考資料

            • 將您對(duì) C/C++ 工具的見解或問(wèn)題添加到本文的討論中。(您可以使用此鏈接,或者單擊頁(yè)面頂部或底部的“討論”圖標(biāo)。)
            • 請(qǐng)?jiān)L問(wèn) W3C XML 頁(yè)面,該頁(yè)面提供了 XML 規(guī)范中的大部分內(nèi)容。
            • 請(qǐng)?jiān)L問(wèn) XML 相關(guān)軟件的匯總站點(diǎn)。
            • 請(qǐng)?jiān)诖耸褂?Zvon 的通用 XML 教程或 developerWorks 的 Doug Tidwell 撰寫的 XML 入門以及 XML 專區(qū)教學(xué)區(qū)域中的其它課程來(lái)獲取 XML 的基礎(chǔ)知識(shí)。
            • 請(qǐng)閱讀 Howard Katz 的 XQuery 簡(jiǎn)介
            • 請(qǐng)認(rèn)真閱讀 Gregor Purdy 撰寫的出色的 critique of XML-RPC
            • 請(qǐng)?jiān)?Jane Fung 的文章XML 和 DTD 簡(jiǎn)介中學(xué)習(xí)編寫 DTD 的基礎(chǔ)知識(shí)。
            • 請(qǐng)?jiān)?Michael Kay 的技術(shù)概述 XSLT 是什么類型的語(yǔ)言?中了解 XSLT。
            • 請(qǐng)?jiān)?Jabber 上了解其它類型的消息傳遞(即時(shí)消息傳遞)的信息。
            • 通過(guò)認(rèn)真學(xué)習(xí) IBM Certified Developer Program 的 XML Certification guidelines 來(lái)掌握 XML 開發(fā)人員技能。
            本文中提到的 XML 標(biāo)準(zhǔn)


            關(guān)于作者
            Rick 是一個(gè)老資格的程序員,他的職業(yè)生涯就是炒股和克服最后期限,同時(shí)給女招待足以使她們臉紅的慷慨的小費(fèi)。他的名字已經(jīng)傳遍了小鎮(zhèn)里的每一個(gè)咖啡館。他還喜歡在以技術(shù)為主題的研討會(huì)上發(fā)表演講。他的設(shè)計(jì)標(biāo)新立異,現(xiàn)在他正在研究更時(shí)髦的建模方法,如 UML。他汽車的保險(xiǎn)桿上寫著:“I for XHTML.”。可以通過(guò) rfmobile@swbell.net 與 Rick 聯(lián)系。

            posted on 2006-04-30 09:25 楊粼波 閱讀(920) 評(píng)論(4)  編輯 收藏 引用 所屬分類: 文章收藏

            評(píng)論

            # re: [轉(zhuǎn)載]C/C++ 開發(fā)人員:充實(shí)您的 XML 工具箱(初涉XML的值得一讀) 2006-04-30 15:05 jemmy

            這么老的東西就不要轉(zhuǎn)了啦  回復(fù)  更多評(píng)論   

            # re: [轉(zhuǎn)載]C/C++ 開發(fā)人員:充實(shí)您的 XML 工具箱(初涉XML的值得一讀) 2006-04-30 17:45 天下奇毒

            呵呵,我為了這玩意走了不少?gòu)澛罚?
            看看也好。  回復(fù)  更多評(píng)論   

            # re: [轉(zhuǎn)載]C/C++ 開發(fā)人員:充實(shí)您的 XML 工具箱(初涉XML的值得一讀) 2006-04-30 21:07 dudu

            請(qǐng)不要在首頁(yè)轉(zhuǎn)載文章!  回復(fù)  更多評(píng)論   

            # re: [轉(zhuǎn)載]C/C++ 開發(fā)人員:充實(shí)您的 XML 工具箱(初涉XML的值得一讀) 2006-05-02 19:26 snnn

            我用的最多的還是libxml++
            xquery剛開始學(xué)
            挺喜歡berkeley db xml
              回復(fù)  更多評(píng)論   

            国产成人99久久亚洲综合精品| 国产精品99久久久久久宅男小说| 一本色道久久HEZYO无码| 久久天天日天天操综合伊人av| 91精品国产91热久久久久福利| 99久久夜色精品国产网站| 亚洲精品成人网久久久久久| 久久午夜夜伦鲁鲁片免费无码影视 | 欧美国产精品久久高清| 久久精品桃花综合| 成人国内精品久久久久影院| 色噜噜狠狠先锋影音久久| 日韩人妻无码一区二区三区久久99| 久久精品毛片免费观看| 久久有码中文字幕| 2021少妇久久久久久久久久| 久久这里有精品视频| 久久久精品免费国产四虎| 久久这里都是精品| 国产福利电影一区二区三区,免费久久久久久久精 | 伊人色综合久久天天| 亚洲午夜久久久久妓女影院| 久久高清一级毛片| 久久ww精品w免费人成| 久久夜色精品国产www| 99久久www免费人成精品| 97久久久精品综合88久久| 色青青草原桃花久久综合| 国产成人精品久久亚洲高清不卡 | 国产亚洲精品久久久久秋霞| 久久一区二区三区免费| 精品久久久久久无码人妻热| 久久精品人人做人人爽电影蜜月| 久久久这里只有精品加勒比| 国产精品无码久久四虎| 91久久福利国产成人精品| 99久久777色| 色综合合久久天天综合绕视看| 国产精品久久久福利| 无码精品久久久天天影视| 无码日韩人妻精品久久蜜桃|