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转换快得多。