XQuery 簡介:W3C 的 XML 查詢語言提議標準一瞥
級別: 初級
Howard Katz, 所有者, Fatdog Software
2001 年 6 月 01 日
2006 年 2 月 06 日 更新
Howard Katz 介紹了 W3C XQuery 規(guī)范,該規(guī)范目前正在努力成為推薦標準。這個復(fù)雜的規(guī)范目前包含 15 個不同的工作草案,而且在最終完成之前可能還會增加。本文提供了該規(guī)范的一些歷史背景、形成文檔的路線圖和規(guī)范當前狀態(tài)的簡單介紹。側(cè)欄簡要描述了 XQuery 表層語法的一些主要特性。通過示例代碼示范了 XQuery 和 XQueryX 之間的區(qū)別,并給出了關(guān)于表層語法的例子。
注意:本文在 2005 年 12 月經(jīng)過修正,結(jié)合了 XQuery 規(guī)范的最新變動情況:其中八個工作草案已進入 “W3C 候選推薦標準” 狀態(tài),整個規(guī)范距離最終成為 “推薦標準” 更近了一步。主要的全文文檔最初發(fā)表于 2004 年,最近經(jīng)過了修改。關(guān)于更新設(shè)施的 “需求工作草案(Requirements Working Draft)” 和建立 XPath/XQuery 詞法分析器(tokenizer)的草案都是 2005 年第一次發(fā)布的。XQuery 特性的數(shù)量繼續(xù)增長,XQuery 實現(xiàn)者列表和 Web 上的開發(fā)人員資源也在不斷增加。
沿著成為 W3C 推薦標準的道路走了漫長的六年之后,XQuery 規(guī)范頗具好萊塢大片的神秘和不朽色彩,就像 “星球大戰(zhàn)” 和 “指環(huán)王” 系列一樣。XQuery 起源于 1998 年由 W3C 發(fā)起的查詢語言研討會,來自工業(yè)界、學(xué)術(shù)界和研究團體的代表聚集到波士頓,提出了 XML 查詢語言中他們認為重要的特性和需求。
那些對歷史感興趣的人可以在線獲取這 66 篇演講稿(參閱 參考資料),它們主要來自兩大不同的陣營:那些將 XML 主要作為文檔 使用的人(在很大程度上反映了 XML 起源于 SGML)和將 XML 作為數(shù)據(jù) 使用的人 —— 后者很大程度上反映了 XML 在中間件領(lǐng)域、前端傳統(tǒng)關(guān)系數(shù)據(jù)庫領(lǐng)域中不斷增長的現(xiàn)狀。
尤 其是俄勒岡州研究生院的 David Maier的演講稿 “Database Desiderata for an XML Query Language”,它非常簡明扼要,非常有助于了解 Query Language Working Group(查詢語言工作組)的思想,后者是在波士頓討論會之后不久特許成立的。
雖然成員時增時減,但按照 W3C 的標準,這個工作組很龐大(據(jù)說只有 Protocol Working Group(協(xié)議工作組)的成員比它多)。它由 30 多個成員公司構(gòu)成,反映了數(shù)據(jù)和文檔這兩大陣營各自的觀點?,F(xiàn)在合并而成的最終形式(經(jīng)過了漫長的時間)是一種 XML 查詢語言標準, 能夠代表這兩個團體的需求和觀點。
對于 XML 用戶來說,最熟悉的 XQuery 關(guān)鍵組件是 XPath,它本身也是一個 W3C 規(guī)范。單獨的 XPath 位置路徑本身(“//book/editor” 意味著 “在當前數(shù)據(jù)集中查找所有圖書編輯”)就是完全有效的 XQuery。在數(shù)據(jù)方面,XQuery 具有類似于 SQL 的外觀和能力,這是來自關(guān)系數(shù)據(jù)庫世界的用戶所歡迎和熟悉的。
![]() ![]() |
![]()
|
XQuery 最初稱為 Quilt。Quilt 最初作為用戶級語法的測試工具,是工作組中三個勤奮而又眼光遠大的成員創(chuàng)立的:Jonathan Robie、Don Chamberlin 和 Daniela Florescu。在定義需求、用例以及底層數(shù)據(jù)模型和代數(shù)方面,Quilt 都建立在整個工作組的協(xié)同努力的基礎(chǔ)上。
Robie、Chamberlin 和 Florescu 指出了一些語言對 Quilt 設(shè)計的影響,包括 XQL、XML-QL 和 SQL。如果對計算機語言的演化感興趣,請閱讀 “XML Query Language: Experiences and Exemplars”(參閱 參考資料),這篇意義重大的論文對前兩種語言以及另外兩種語言 YaTL 和 Lorel 進行了很好的比較。作者 Mary Fernandez、Jerome Simeon 和 Phil Wadler 本身都是該工作組的成員。
既然數(shù)據(jù)和文檔團體持有如此不同的的觀點,以及工作組所建立的基礎(chǔ)的可靠性,這個龐大的規(guī)范需要如此長的時間才向大眾公布也就不足為奇了。W3C 工作組的內(nèi)部進展是嚴格保密的,并且在 2001 年 2 月中旬以前,查詢語言工作組的大多數(shù)工作都是秘密進行的。
很 早就發(fā)布了 Requirements 文檔和 Data Model 工作草案,但是直到 2001 年 2 月,工作組的發(fā)布工作才得以進入高潮,那時大量的文檔開始出現(xiàn)。此后在 2001 年進行了兩次重要更新,以后每年都有三四次更新,只有 2004 年例外,工作組只發(fā)布了一次更新。
今年新增加了更新機制的需求文檔,再加上為 XQuery 語言實現(xiàn)者提供的關(guān)于建立詞法分析器的簡短說明,文檔總數(shù)達到了 16 個(包括由于某種我不清楚的原因也放在 XML Query 網(wǎng)站上的 XSLT 規(guī)范),不用很長時間就會組成一套完整的文檔集。肯定會在某個時候出現(xiàn)一種更新語言文檔。
![]() ![]() |
![]()
|
完全用于描述和定義 XQuery 的文檔目前包括:
- XML Query Requirements
- 工作組的主要規(guī)劃文檔。XQuery 需求列表。
- XML Query Use Cases
- 一些實際場景和解決特定問題的 XQuery 片段。
- XQuery 1.0: An XML Query Language
- 核心文檔,介紹語言本身,以及對大多數(shù)其他內(nèi)容的概述。
- XQuery 1.0 and XPath 2.0 Data Model
- XML 信息集的擴展。描述查詢實現(xiàn)必須理解的數(shù)據(jù)項和形式語義的基礎(chǔ)。
- XQuery 1.0 and XPath 2.0 Formal Semantics
- 從形式上定義語言的底層代數(shù)。
- XML Syntax for XQuery 1.0 (XQueryX)
- 為喜歡使用 XML 的人(主要是計算機)提供的另一種語法。
- XQuery 1.0 and XPath 2.0 Functions and Operators Version 1.0
- XML Schema 數(shù)據(jù)類型、 XML 節(jié)點及其序列的大約 225 個函數(shù)和操作符。
- XML Path Language (XPath) 2.0
- 單獨分離出來的 XPath 文檔。
- XPath Requirements Version 2.0
- XPath 的需求文檔。
- XSLT 2.0 and XQuery 1.0 Serialization
- 對從 XQuery 1.0 和 XPath 2.0 Data Model 輸出序列化尖括號 有關(guān)的 XML 問題的考察。序列化本質(zhì)上 不是主語言規(guī)范的一部分。
- XML Query and XPath Full-Text Requirements
- 描述 Full-Text Recommendation 需要達到的功能需求。
- XML Query and XPath Full-Text Use Cases
- Full-Text 規(guī)范應(yīng)該能夠處理的實際場景。
- XQuery 1.0 and XPath 2.0 Full-Text
- 主 full-text 文檔,詳細描述嚴格意義上的 XQuery 的全文擴展語言。
- XQuery Update Facility Requirements
- XQuery 要求的能夠?qū)σ延形臋n寫入新數(shù)據(jù)以及對文檔進行查詢的功能。
- Building a Tokenizer for XPath or XQuery
- 工作草案注釋文件,選擇了主 XQuery 1.0 文檔中的一些語法資料進行解釋。只對語言的實現(xiàn)者有意義。
這些文檔(參閱 參考資料) 代表了大量工作?!癤Query 1.0: An XML Query Language” 是其中的關(guān)鍵,但其他文檔也為 XQuery 成為良好的規(guī)范和全面支持的語言作出了貢獻。據(jù)我所知,這是出自 W3C 的最復(fù)雜的一套規(guī)范(雖然 XML Schema 或許可與之相比,但那又是另一回事了)。
如果您對如此之多的文檔感到驚訝和不知道從何處著手,我可以推薦兩種方法。可以從核心的 XQuery 1.0 文檔開始。它有一個很好的介紹性概述,詳細介紹了該語言的很多特性。另一種方法是從選擇一個 Use Cases 工作草案開始。該文檔列舉了 XQuery 能夠發(fā)揮作用的一些實際場景。每個用例都針對特定的應(yīng)用領(lǐng)域,并列出了用于該領(lǐng)域示例數(shù)據(jù)的一些 XQuery 代碼。如果希望看到實際語法的具體例子,這些代碼片段是非常有價值的。第三種方法是研究 Functions and Operators 工作草案中列出的很多內(nèi)置函數(shù),但采用這種方法最好對語言要有基本的理解。
最近幾年關(guān)于這個領(lǐng)域出現(xiàn)了兩本很好的圖書,闡釋 了該規(guī)范的各種細節(jié),都是 Addison-Wesley 出版的:“XQuery from the Experts” 收集了來自該工作組成員的一些關(guān)于 XQuery 的技術(shù)文章,而 “XQuery: The XML Query Language” 則是 Microsoft 的 Michael Brundage 撰寫的必讀參考書(參閱 參考資料)。
![]() ![]() |
![]()
|
XQuery 實際上是三種語言合為一體:
- 表層語法是其中最容易看到的語言,也是用戶最可能接觸到的。從很多方面來說,這個語言版本就是 XQuery。(參閱側(cè)欄 語法:一個簡單的例子 中關(guān)于表層語法的例子。)
- 一種基于 XML 的替代語法用另一種更便于機器處理的語言代替了表層語言。(參閱本文后面的 XQueryX。)
- 形式代數(shù)語言詳細描述了 XQuery 處理程序的內(nèi)部工作機制。
![]() ![]() |
![]()
|
Data Model and Formal Semantics(數(shù)據(jù)模型和形式語義)工作草案共同為 XQuery 提供了精確的理論基礎(chǔ)。這兩個文檔詳細介紹了查詢代數(shù),這是用形式術(shù)語定義的一組精確定義,它定義了 XQuery 查詢期望操作的核心實體以及各種語言操作符怎樣使用那些操作數(shù)的公式。除非是查詢引擎的實現(xiàn)者、有充足的經(jīng)費保障或者單純喜歡復(fù)雜的形式系統(tǒng),否則不會對它感興趣。
提供了一個讓實現(xiàn)者能夠?qū)⒈砻嬲Z法特性直接重新造型為底層代數(shù)的映射。正如一些廠商在 XML 商業(yè)展示會上所展示的那樣,可以實現(xiàn)實際上與代數(shù)直接溝通的查詢處理程序(雖然我認為這更多的是概念證明性的)。參考資料 中有一個鏈接指向其中一個基于代數(shù)的引擎的在線演示版本。
代數(shù)還提供了詳細描述如何將復(fù)雜表達式優(yōu)化及轉(zhuǎn)變成更簡單的等價形式的規(guī)則。我只能說(我不是語言學(xué)家,并且形式語義文檔讀起來并不輕松),它們都是好東西。特別是大型數(shù)據(jù)庫供應(yīng)商會贊賞一種從頭開始設(shè)計并且經(jīng)過優(yōu)化而高效的查詢語言結(jié)構(gòu)。
代數(shù)還提供了附加類型信息的位置。XQuery 是強類型的:如果數(shù)據(jù)有相關(guān)的 XML Schema,處理程序就可以按照模式進行驗證、并為查詢引擎提供文檔中節(jié)點數(shù)據(jù)類型的后模式驗證信息集(PSVI)信 息,同時利用 “XML Schema Part 2: Datatypes” 中聲明的類型和自定義的用戶定義類型。代數(shù)同時具有靜態(tài)和動態(tài)類型檢查能力。比方說,引擎可以使用 PSVI 派生的類型信息在編譯時靜態(tài)地檢查查詢表達式的數(shù)據(jù)類型(分析查詢的語法正確性時)。在這個周期中盡早地確定類型無效的查詢,這樣能夠大大減少對大型數(shù)據(jù) 集進行很可能是昂貴的(和無結(jié)果的)搜索的需要。XQuery 規(guī)范中涉及到語言的語法和語義的大部分工作都與類型有關(guān)。
![]() ![]() |
![]()
|
XQuery 和 XPath 2.0 具有同樣的公共數(shù)據(jù)模型,有點奇怪的數(shù)據(jù)模型文檔標題也反映了這一點:“XQuery 1.0 and XPath 2.0 Data Model”(這也是工作組開始使用縮寫詞 XDM 表示數(shù)據(jù)模型的原因)。XPath 2.0 現(xiàn)在已經(jīng)完全成熟。該數(shù)據(jù)模型描述了 XPath 處理程序所關(guān)心的 XML 文檔中的核心信息,XPath step 操作的最終語法和語義基本上已經(jīng)完成。全部規(guī)范為 Query Language 工作組和 XSL 工作組共同所有,這兩個工作組需要對 XPath 2.0 的未來達成一致。不論在政治上還是在技術(shù)上,這常常會帶來挑戰(zhàn)。不過,即便取得一致意見的道路崎嶇不平,這兩個工作組看來并沒有表現(xiàn)出有多么不協(xié)調(diào)(至少 在外人眼里如此)。
為了說明從 XPath 1.0 轉(zhuǎn)移到 2.0 的意義,僅僅舉一個例子:XPath 1.0 是基于集合的表達式語言。XPath 1.0 的 4 種數(shù)據(jù)類型之一,節(jié)點集,僅僅是集合而已。按照定義,集合是無序的并且不含重復(fù)成員。另一方面,XPath 2.0 卻是以序列為基礎(chǔ)的。相比而言,XPath 2.0 中節(jié)點的序列(毫不奇怪,相應(yīng)地被稱為節(jié)點序列)是有序的,并且允許重復(fù)。用行話來說,這些差異的分歧存在于許多問題中,工作組需要獨立和協(xié)作找出這些問題來,以便使他們都能夠與 XPath 2.0 協(xié)調(diào)一致。
![]() ![]() |
![]()
|
所有實質(zhì)性的遺留問題都已經(jīng)解決。組成 XQuery 的七個關(guān)鍵文檔按 W3C 的說法成為了 “候選推薦標準”,這意味著,用正式的術(shù)語來說,XQuery 現(xiàn)在被認為 “是穩(wěn)定的且合適于實現(xiàn)”。
按 照正式的 W3C 推薦標準工作流程,以上 Last Call 階段中提出的所有問題都已得到響應(yīng),工作組現(xiàn)在正尋找工業(yè)廠商去實際驗證 XQuery 的主要特性是可實現(xiàn)的。為此,實現(xiàn)者必須對工作組提供的測試套件運行其實現(xiàn)。那些在候選推薦標準階段沒有被兩個或更多廠商實現(xiàn)的特性,就有可能被從規(guī)范中 刪除。當前有風(fēng)險的特性包括:
- 靜態(tài)類型化
- 模塊
- 集合
- 靜態(tài)類型化
- 普通的 XML 嵌入
- 復(fù)制名稱空間(Copy-namespace)聲明
![]() ![]() |
![]()
|
XQueryX 是一種替代表層語言的基于 XML 語法的規(guī)范,也是較早加入 XQuery 文檔家族的文件之一。XQuery 需求中有一條指出多種語法是允許的,看來工作組似乎是在兩面下注:一種格式必須方便人類讀寫,另一種則要求能夠用 XML 表達。XQueryX 是工作組對后一種需求的答案。
基于 XML 的查詢表是具備 XML 所有顯而易見、眾所周知的優(yōu)點:很容易使用標準工具解析、生成和詢問查詢的內(nèi)容。這樣做可能很有用,比方說,如果正在進行源代碼級的優(yōu)化或轉(zhuǎn)換,就可能需要方便地檢查查詢中是否具有特定語法結(jié)構(gòu)的能力。XML 非常適合這類工作。
XQueryX 基本上是該語言的形式語法到 XML 的一對一映射。由于語法的復(fù)雜性,使得 XQueryX 非常 冗長,基本上無法閱讀。所幸的是,該語言的目標受眾 —— 機器 —— 不會對此抱怨。清單 1 和 2 提供了分別用標準 XQuery 語法和 XQueryX 語法表示的簡單查詢表達式。要注意像類固醇一樣的膨脹因子。
清單 1. 標準語法表示的簡單查詢
|
清單 2 顯示了等價的 XQueryX 查詢。因為太長,省略了大約四分之三的篇幅。XQueryX 工作草案中的完整清單有 132 行之多:
清單 2. XQueryX 格式的查詢(片段)
|
![]() ![]() |
![]()
|
2001 年 6 月,就在第一次重要的發(fā)布迭代之后,在我第一次撰寫關(guān)于已有 XQuery 實現(xiàn)的總結(jié)文章時,當時還只有兩種實現(xiàn):我自己很早的一種實現(xiàn)和 Microsoft 的實現(xiàn)。于是我給自己找了點樂子,開玩笑說比爾蓋茨和我成了市場競爭中的賽馬師。那個時代已經(jīng)過去了,經(jīng)過四年和發(fā)布了更多工作草案之后,那個玩笑已經(jīng)過 時了?,F(xiàn)在差不多有四五十種實現(xiàn)了,還有大量的相關(guān)產(chǎn)品和工具。
如果要尋找一個實現(xiàn),最好的地方就是 XML Query 主頁(參閱 參考資料)。這個列表更新很快,隨著興趣和動機不斷增強,隨著規(guī)范越來越接近推薦標準狀態(tài),我預(yù)料將會不斷出現(xiàn)新的實現(xiàn)。
語法:一個簡單的例子
讓我們通過實際的例子快速看一下 XQuery 的一些特性。下面是一個非常簡單的查詢,操作 Use Cases 文檔中的規(guī)范示例文件。該查詢展示了 XQuery 投影(在數(shù)據(jù)集中選擇與所定標準匹配的節(jié)點子集)和轉(zhuǎn)換(生成與正被查詢的文檔不同的輸出文檔)的能力。XQuery 允許在一個查詢中同時指定要搜尋的內(nèi)容和輸出格式。 清單 3 顯示了查詢操作的文檔的片段: 清單 3. 查詢操作的文檔片段
現(xiàn)在希望得到 清單 4 所示的輸出文檔(經(jīng)過一點美化): 清單 4. 輸出文檔
下面就是查詢本身。它的任務(wù)是掃描查詢文檔中的所有圖書,生成上面所顯示的結(jié)果文檔:在輸出的每個新建 (注意,我在這里使用了術(shù)語 “查詢文檔”(單數(shù))。這是一種簡化,XQuery 數(shù)據(jù)模型也能處理文檔集合以及文檔片段。) 清單 5. 掃描查詢文檔中所有圖書的查詢
清單 5 中,使用 下面是該查詢的一些有趣特性: 該示例包含兩個嵌套的 請務(wù)必留意,這些變量不是賦值的 而是綁定的。差別細微但很重要:變量一旦綁定,它的值就不可更改。這可以防止在運行中對變量重新賦值而造成糟糕的負面影響。另一個潛在的好處是,(在某種程度上)可以在處理期間重排包含變量的行,從而允許智能引擎優(yōu)化它們的查詢。
清單 6. 帶有 for 和 let 子成分的 FLWOR 表達式
表明這是一個變化非常多的表達式類型,能夠生成大量可能的查詢實例。正如該生成所顯示的那樣, 一般來說,最終會有一個 這個查詢包含三個元素構(gòu)造器。通過將文字尖括號 XML 直接寫入查詢本身的正文中,在查詢過程中動態(tài)生成元素 在需要區(qū)分文字文本內(nèi)容和元素構(gòu)造器中需要計算的子表達式時,使用花括號( 清單 7. 用括號區(qū)分內(nèi)部和外部標記的代碼
順便提一句,花括號是在 2001 年 7 月修訂表面語言語法時引入的。更早版本的語法不需要花括號?;ɡㄌ柺钦Z言在成為推薦標準過程中不斷修改和演化的一個好例子。
清單 8 中的代碼顯示了行內(nèi)屬性構(gòu)造器的用法。 清單 8. 使用行內(nèi)屬性構(gòu)造器
清單 9 中的表達式通過 清單 9. 使用內(nèi)置運算符 text()
|
![]() ![]() |
![]()
|
學(xué)習(xí)
- 您可以參閱本文在 developerWorks 全球站點上的 英文原文。
-
XML Query Requirements:工作組規(guī)劃文檔;XQuery 需求列表。
-
XML Query Use Cases:一些實際場景和解決特定問題的 XQuery 代碼片段。
-
XQuery 1.0: An XML Query Language:核心文檔,詳細介紹了表層語言并對所有其他內(nèi)容作了概述。
-
XQuery 1.0 and XPath 2.0 Data Model:XML 信息集的擴展。描述了查詢實現(xiàn)需要處理的數(shù)據(jù)項。現(xiàn)在被稱為 XDM。
-
XQuery 1.0 and XPath 2.0 Formal Semantics:形式定義查詢引擎行為的底層代數(shù)。
-
XML Syntax for XQuery 1.0 (XQueryX):另一種查詢 XML 語法,主要用于機器。
-
XML Path Language (XPath) 2.0:從 XQuery 中分離出來的 XPath 2.0 規(guī)范。
-
XQuery 1.0 and XPath 2.0 Functions and Operators:大約有 225 個。
-
XSLT 2.0 and XQuery 1.0 Serialization:對于如何產(chǎn)生尖括號 XML 的官方說明。
-
XQuery and XPath Full-Text Requirements:XQuery 全文子語言的要求。
-
XQuery and XPath Full-Text Use Cases:全文的實際場景。
-
XQuery 1.0 and XPath 2.0 Full-Text:嚴格 XQuery 的全文語言擴展。
-
XPath Requirements Version 2.0:XPath 的需求文檔。
-
XQuery Update Facility Requirements:XQuery 要求能夠向已有文檔寫入新數(shù)據(jù)以及查詢文檔的能力。
-
Building a Tokenizer for XPath or XQuery:選擇主 XQuery 1.0 文檔中的一些語法材料加以闡釋的工作草案注釋文件。只對語言的實現(xiàn)者有意義。
-
XML Query Languages: Experiences and Exemplars:該文通過分析已有的四種查詢語言確定了 XML 查詢語言的基本特性:XML-QL、YATL、Lorel 和 XQL。
-
XML Schema Part 2: Datatypes:XQuery 能夠理解的數(shù)據(jù)類型。
-
QL98: Query Languages Workshop:最初有關(guān)查詢語言的波士頓討論會的 W3C Web 站點。
-
Database Desiderata for an XML Query Language:David Maier 在研討會上的演講稿。
-
XML-QL: A Query Language for XML,Deutsch、Fernandez、Florescu、Levy 和 Suciu:對 XQuery 的影響。
-
XML Query Language: A Proposal,Robie、Lapp 和 Schach:向 W3C 提議 XQL。
-
Quilt:Robie、Florescu 和 Chamberlin 所主持的關(guān)于這個 XQuery 前身的網(wǎng)站。
-
(Addison-Wesley, 2004):Michael Brundage 撰寫的語言參考。
-
(Addison-Wesley, 2003):XML Query 工作組成員撰寫的有關(guān) XQuery 技術(shù)文章的綱要匯編。
-
Saxon:Michael Kay 開發(fā)的被廣泛采用的開放源碼 XSLT 處理器,現(xiàn)在增加了 XQuery。有人稱之為這種語言的權(quán)威考實現(xiàn)。
獲得產(chǎn)品和技術(shù)
-
Galax:Bell 實驗室 Jerome Simeon 的基于形式語義的查詢引擎演示?!靶问秸Z義” 是現(xiàn)在對 2001 年 6 月 7 日之前所說 “代數(shù)” 的正式稱呼。
-
XQEngine:作者自己基于 Java 的開放源碼查詢引擎?,F(xiàn)在有點落后了,因為至少目前作者放棄了跟蹤規(guī)范的修改。
-
Mark Logic Content Server:(部分)領(lǐng)先的圖書出版商都使用這個包??梢悦赓M存儲和查詢 50 MB 的內(nèi)容。
-
Berkeley DB XML:Sleepycat 的開放源碼原生 XML 數(shù)據(jù)庫,以令人尊敬的、高可伸縮性的 Berkeley DB 數(shù)據(jù)庫引擎為基礎(chǔ)。
- IBM 的 DB2 Extender 頁面 簡要介紹了 DB2 如何處理 XML,包含查詢 XML 白皮書的鏈接,可以查看 PDF 文件,或者去 DB2 Extender 下載。
![]() ![]() |
![]()
|
![]() |
||
|
![]() |
Howard Katz 生活在加拿大BC省的 Roberts Creek,他是 Fatdog Software 公司的所有者,該公司專門開發(fā) XML 文檔搜索軟件。他是 XQEngine 的作者,這是一種基于 Java 的開放源碼 XQuery 引擎。近 35 年來他一直是一位活躍的程序員(一直業(yè)績良好),并長期為計算機行業(yè)刊物撰寫技術(shù)文章。他曾為 Microsoft 撰寫一個在線 Java 專欄,為 Apple 每月撰寫一期關(guān)于面向?qū)ο缶幊痰膶谖恼?。他曾?“溫哥華 XML 開發(fā)者協(xié)會” 的主持人。他和妻子夏天去海上劃船,冬天去邊遠地區(qū)滑雪。您可以通過 howardk@fatdog.com 與 Howard 聯(lián)系。 |
posted on 2006-03-18 21:11 Vincent.Chen 閱讀(392) 評論(0) 編輯 收藏 所屬分類: AJAX