XQuery/背景
XQuery是函數語言程式設計語言的一個例子。與其他函式式語言一樣,XQuery變數是不可變的,這意味著你只能設定它們一次,之後不能再改變它們。XQuery函式沒有“副作用”,這意味著它們不會改變沒有明確傳遞給它們的資料。
函數語言程式設計近年來隨著MapReduce演算法的興起而越來越受歡迎,MapReduce演算法最近被谷歌推廣。谷歌利用其資料中心數萬個CPU的能力表明,函式式語言在許多方面優於過程式語言。但函數語言程式設計的許多益處可以追溯到20世紀30年代的數學形式化,包括λ演算和μ遞迴函式。
雖然XQuery 1.0 W3C規範不允許將函式作為引數傳遞給函式,但大多數實現,例如eXist都支援這一點,因此從技術上講,eXist對XQuery的實現是一種真正的函式式語言,但W3C標準不是。然而,XQuery 1.1允許函式項作為資料[1],而
函數語言程式設計的歷史可以在函數語言程式設計中找到。這篇文章對函數語言程式設計的歷史背景以及為什麼函式式程式適合可靠性至關重要的伺服器環境進行了很好的闡述。
在1998年,Jonathan Robie和Joe Lapp(當時是WebMethods的首席架構師)建立了一種新的查詢語言,專門用於查詢XML檔案,稱為XQL
1998年,兩種查詢語言,XQL和XML-QL在W3C內部引起了廣泛關注,併成立了一個專門負責基於XML的查詢語言的工作組。
1998年,全球資訊網聯盟舉辦了一個關於查詢語言的會議[2]。這次會議彙集了來自世界各地和各個領域的XML和查詢語言專家。共提交了66份“立場檔案”。會議成果是形成了一個非常龐大的用例和提案知識庫,為未來標準化查詢語言奠定了基礎。
工作組選取了大約90個用例,並比較了七種高階查詢語言執行這些用例的能力。這七種語言中沒有一種是完美的。每種語言都存在一些缺陷。工作組選取了這七種語言中最好的部分,並建立了XQuery標準。
XSLT語言於1999年達到了推薦狀態。但許多人覺得XSLT太難學,而且由於XML語法,它對許多軟體開發人員來說非常陌生。具有SQL背景的人很難理解如何學習XSLT。
研究表明,熟悉SQL的人可以快速學習XQuery。一旦開發人員理解了FLWOR語句的結構,許多SQL概念,例如排序和選擇不同值,就很容易學習。
許多開發人員曾經認為XSLT模板式轉換適合轉換文件,而XQuery適合查詢更結構化的XML資料,例如書籍元資料的集合。最近對typeswitch式轉換的研究表明,XQuery模組和函式可以用來建立文件式轉換,可以與大多數XSLT函式媲美。而且,由於許多XQuery系統利用文件索引,因此它們的速度可能比從未設計為使用索引XML結構的XSLT轉換快得多。