揭穿 XQuery 的神話和誤解_Xml教程
教程Tag:暫無Tag,歡迎添加,賺取U幣!
推薦:基于AJAX技術(shù)提高搜索引擎排名描述 嵌入在你的web頁面中的導(dǎo)航元素能夠降低你的搜索引擎評(píng)價(jià)排名并且降低你的網(wǎng)站的響應(yīng)性能。本文作者想同你一起探討如何使用AJAX技術(shù)來解決這兩個(gè)問題。 許多設(shè)計(jì)良好的web站點(diǎn)都包含大量
XQuery 給軟件架構(gòu)師和開發(fā)人員帶來了很多希望,因?yàn)榇蟠鬁p少了建立使用 XML 的服務(wù)所需要編寫的代碼量。您也許認(rèn)為 XQuery 所做的一切很容易理解,但是在 XQuery 的軟件開發(fā)社區(qū)中仍然存在著錯(cuò)誤的想法和誤解。Frank Cohen 在本文中詳細(xì)剖析和澄清了圍繞著 XQuery 的很多神秘色彩和誤解。如果您在使用 XML、Web 或者面向服務(wù)的架構(gòu)(Service Oriented Architecture,SOA),那么很可能會(huì)從 XML Query (XQuery) 標(biāo)準(zhǔn)的制定中受益。雖然 XQuery 還未批準(zhǔn)為正式標(biāo)準(zhǔn),但已經(jīng)有幾十種實(shí)現(xiàn)每天都在幫助軟件架構(gòu)師和開發(fā)人員了。即將形成的 XML 文檔查詢標(biāo)準(zhǔn)包括了下一代 XML 選擇語言(XPath 2)、XML 序列化、全文檢索和功能性 XML 數(shù)據(jù)建模。這樣規(guī)模的項(xiàng)目免不了有很多神話和誤解需要揭穿。下面是圍繞著 XQuery 的一些常見的神話和誤解。
誤解:數(shù)據(jù)庫公司將 XQuery 視作其核心業(yè)務(wù)的直接對(duì)手
數(shù)據(jù)庫公司將 XQuery 看作一個(gè)機(jī)會(huì),與其核心解決方案互相補(bǔ)充。
對(duì)于軟件架構(gòu)師和開發(fā)人員而言,XQuery 提高了生產(chǎn)率,增加了敏捷性。工具供應(yīng)商迫切希望支持 XQuery 是合情合理的。
對(duì)于開發(fā)人員來說,XQuery 很像 SQL,自然而然地對(duì)兩者加以比較。何況越來越多的數(shù)據(jù)正使用 XML 標(biāo)記,這就迫使數(shù)據(jù)庫公司在產(chǎn)品中增加 XML 存儲(chǔ)、持久性和查詢的能力。XQuery 擁有如此眾多的開發(fā)人員支持,以至于 IBM 和 Oracle 將它們的角逐放在一旁,轉(zhuǎn)而擴(kuò)展其核心數(shù)據(jù)庫產(chǎn)品以提供 XQuery 能力。
數(shù)據(jù)庫公司也看到了成為第一個(gè)充分利用 XML 格式的數(shù)據(jù)庫供應(yīng)商(從而最終成為市場(chǎng)霸主)所帶來的機(jī)會(huì)。 目前存儲(chǔ)在關(guān)系數(shù)據(jù)庫中的數(shù)據(jù)按照行和字段進(jìn)行了規(guī)格化。在 XML 世界中,每一行包含無限多個(gè)字段,每個(gè)字段都是父/子層次結(jié)構(gòu)中的一部分。最先提供高性能和 XQuery 靈活性的供應(yīng)商將贏得一個(gè)巨大的新市場(chǎng)。
一個(gè)證據(jù)是,XQuery 將 IBM 和 Oracle 團(tuán)結(jié)在一起(不再是兇狠的對(duì)手),合作提出 JSR 225(參閱參考資料), XQuery API for Java (XQJ)。在 .NET 這一邊,Microsoft 和 IBM 共同向萬維網(wǎng)聯(lián)盟(W3C)提交了 XQuery 測(cè)試包。
神話:XQuery 將代替 XSLT
XQuery 和 XSLT 都有足夠多的開發(fā)人員支持,將共存下去。事實(shí)上,XQuery 1.0 和 XSLT 2.0 最新規(guī)范的開發(fā)是先后進(jìn)行的。
XQuery 和 XSLT 交叉之處在于它們解決的問題:XML 數(shù)據(jù)轉(zhuǎn)換、XML 集合聯(lián)邦和 XML 數(shù)據(jù)高級(jí)查詢。開發(fā)人員仍仍將看到關(guān)于這兩種技術(shù)的爭(zhēng)論,包括各種各樣的神話和誤解。比如,我常常聽說 XQuery 能夠一次查詢多個(gè)不同的源文件,因此要比 XSLT 優(yōu)越得多。事實(shí)上,XSLT 2.0 處理程序允許在輸入隊(duì)列中給出多個(gè)節(jié)點(diǎn)。 XSLT 1.0 有 document() 函數(shù),可以在一次轉(zhuǎn)換中訪問多個(gè)源文件,XSLT 2.0 還支持新的 collection() 函數(shù)。我也常常聽到這樣的說法,雖然 XQuery 的語法看起來更好,但是缺少 XSLT 模板風(fēng)格的模式匹配。雖然這也許是真的,但我堅(jiān)信 XQuery 也會(huì)增加這一功能。最終,開發(fā)人員可以預(yù)期這兩種技術(shù)的改進(jìn)和競(jìng)爭(zhēng)將使它們的功能和能力不相上下。
最后,還有開發(fā)人員頭腦遲鈍的問題。參加的那些 XSLT 會(huì)議讓我感到,我并沒有真正理解它。 XSLT 的轉(zhuǎn)換語法并沒有像 Java 和 Jython 中通常所用的 main() 或 start 方法。我有時(shí)候?qū)?XSLT 看作一種腳本,說明并沒有真正理解 XSLT。XQuery 看起來很像 SQL,解決了很多我不得不從書架上翻找答案的問題。
神話:XQuery 將代替 SQL
XQuery 最適合于 XML,就像 SQL 最適合于關(guān)系數(shù)據(jù)。 XQuery 為需要訪問、挑選、集成和轉(zhuǎn)換一個(gè)或多個(gè) XML 集合的應(yīng)用程序提供了類似于 SQL 的查詢能力。雖然 XML 的狂熱者可能將世界上的一切都看成是用 XML 標(biāo)簽編碼的,單關(guān)系數(shù)據(jù)庫模型仍然根深蒂固,世界上大部分?jǐn)?shù)字?jǐn)?shù)據(jù)是用由行和列組成的表來進(jìn)行編碼的。SQL 不會(huì)很快地消失。相反已經(jīng)出現(xiàn) XQuery 擴(kuò)展,將 SQL 調(diào)用的結(jié)果看作是 XML 文檔集合的一部分。
如上所述,XQuery 對(duì)于 XML 就像 SQL 對(duì)于關(guān)系數(shù)據(jù)庫。但是,有些時(shí)候甚至相對(duì)于關(guān)系數(shù)據(jù)庫而言,XQuery 更容易使用。比方說,對(duì)于一般開發(fā)人員,使用 SQL 創(chuàng)建輸出結(jié)果為新 XML 文檔的多表外連接查詢要比編寫 XQuery 復(fù)雜得多。
XML 的普及已經(jīng)迫使標(biāo)準(zhǔn)團(tuán)體工作組擴(kuò)展 SQL 規(guī)范,以便納入 XML 處理功能。 SQLX Group、INCITS H2 小組和 ISO/IEC JTC1/SC32/WG2 的 SQL/XML 標(biāo)準(zhǔn)化都在致力于擴(kuò)展 SQL 標(biāo)準(zhǔn),使其能夠處理 XML 數(shù)據(jù)。
誤解:采用 XQuery 必須放棄過程性編程而轉(zhuǎn)向面向?qū)ο缶幊?/strong>
對(duì)于 XQuery 來說,過程性腳本語言和面向?qū)ο蟮木幊陶Z言都是一樣的。如果愿意編寫 PHP腳本,仍然可以繼續(xù)這樣做。多數(shù)現(xiàn)有的編程語言都有 XQuery 實(shí)現(xiàn)。
XQuery 給開發(fā)人員帶來的好處是減少了執(zhí)行查詢所需要的代碼量。有時(shí)候關(guān)系數(shù)據(jù)在兩個(gè)或更多的數(shù)據(jù)庫中,開發(fā)人員需要生成報(bào)表來顯示兩個(gè)數(shù)據(jù)庫的并。喜歡使用 Python 這類過程性編程語言的開發(fā)人員可能要編寫 100 或更多代碼行來檢索、解析和處理數(shù)據(jù)。當(dāng)然也可以編寫幾行 XQuery 來完成。
神話:XQuery 比 JDOM、JAXP 和其他 XML 解析 API 更難用
XQuery 用于 XML 數(shù)據(jù)并不比 XML 解析 API 更難。JDOM、JAXP 以及其他 XML 解析 API 提供了處理 XML 數(shù)據(jù)的 Java 代碼和方法。很多面向?qū)ο蟮脑O(shè)計(jì)模式都準(zhǔn)備編寫處理 XML 文檔復(fù)雜性的對(duì)象。編寫 Java 對(duì)象需要時(shí)間、精力和專門的技能。底層 XML 數(shù)據(jù)格式的任何細(xì)微變化都需要修改對(duì)象。XQuery 的擁護(hù)者可以肯定地說,和使用 JDOM 編寫 Java 對(duì)象相比,XQuery 腳本能夠更快地發(fā)現(xiàn)應(yīng)用程序需要表示的 XML 數(shù)據(jù)。另外,很多 XQuery 庫都提供了 Java 接口,因此可以在 Java 類中編寫 XQuery 代碼來獲得結(jié)果集,就像調(diào)用一個(gè)方法一樣。然后讓 Java 類處理結(jié)果。
神話:XQuery 難以學(xué)習(xí)
使用 Java、.NET 和其他語言的軟件開發(fā)人員發(fā)現(xiàn) XQuery 很容易學(xué)。XML 有很多不那么優(yōu)美的地方,包括從早期的 SGML 標(biāo)準(zhǔn)繼承下來的那些部分。 XQuery 使用一組簡(jiǎn)潔的命令,很容易處理 XML。雖然一般開人員要掌握 XQuery 面臨著一些困難,但是學(xué)習(xí)曲線并不很陡峭,也不長(zhǎng)。
分享:XML時(shí)代我們擁有.Net盡管不久微軟將再次接受是否被一分為二的裁決,但微軟主席比爾.蓋茨并沒有因此而放棄壟斷網(wǎng)絡(luò)市場(chǎng)的野心。 蓋茨現(xiàn)在已經(jīng)將大部分公司日常管理事務(wù)交給微軟CEO巴爾默及其團(tuán)隊(duì)來管理,他所負(fù)責(zé)
相關(guān)Xml教程:
- xml創(chuàng)建節(jié)點(diǎn)(根節(jié)點(diǎn)、子節(jié)點(diǎn))
- WML開發(fā)教程之 WAP網(wǎng)站服務(wù)器配置方法
- WMLScript的語法基礎(chǔ)
- 收集的WML Script標(biāo)準(zhǔn)函數(shù)庫
- WML教程之文本框控件Input
- 無線標(biāo)記語言(WML)基礎(chǔ)之WMLScript 基礎(chǔ)
- xml文件的結(jié)構(gòu)解讀
- 關(guān)于XSL - XSL教程
- 選擇模式 - XSL教程 - 2
- XPath入門 - XSL教程 - 3
- 匹配模式 - XSL教程 - 4
- 測(cè)試模式 - XSL教程 - 5
- 相關(guān)鏈接:
- 教程說明:
Xml教程-揭穿 XQuery 的神話和誤解。