XQuery = XML Query,是
W3C所制定的一套标准,用来从类
XML(
标准通用标记语言的子集)文档中提取信息,类XML文档可以理解成一切符合XML数据模型和接口的实体,他们可能是文件或
RDBMS。
基本信息
◆简介
解释XQuery最佳方式是这样讲:XQuery 相对于 XML 的关系,等同于 SQL 相对于数据库表的关系。
XQuery 被设计用来查询 XML 数据 - 不仅仅限于 XML 文件,还包括任何可以 XML 形态呈现的数据,包括数据库。
◆什么是 XQuery?
XQuery 对 XML 的作用类似
SQL 对数据库的作用
XQuery 被所有主要的数据库引擎支持(
IBM、
Oracle、
Microsoft等等)
解析
Query是一种发展得最为慎重的
W3C标准,因而演化得也最为缓慢,XQuery也因此而闻名。造成这种现象的一个主要原因就是,对于如何获得以XML形式存储的信息,业界还没有什么经验。许多公司仍然在这个领域创新,并且正不断产生大量的经验信息,这些信息必须经过处理和提炼,才能使解决XML查询问题的水平达到令人满意的程度。
XQuery还不是W3C推荐标准。最新的工作草案已经有了显著的进展,并且正在被许多不同的供应商或多或少地实现。一些市场主导供应商例如BEA和Software AG已经决定发布一些基于这些工作草案的产品,但是直到其成为W3C的推荐标准前,这些厂商并不准备紧跟这一标准。由于最终发布版的延迟推出,有关其实施的大规模市场推广计划尚未开始。
XQuery低公开度的另一个原因就是,到目前为止,还没什么证据能表明XML格式的数据存储能够成为将关系型数据存储拉下马的通用技术。虽然XML数据库展现出很多有价值的和特殊的特性,但是它们在市场渗透方面与
面向对象数据库比较相似。这两种数据库都可以很方便地解决专业问题,并且适用于中小型系统。不过,随着存储问题复杂性的增加,XML和面向对象数据库看起来都没有
关系型数据库那样容易扩展。实际上,像关系型数据库那样运作可能也不会取得成功。只有在技术方面的大踏步前进才会减少对关系型数据库管理系统遗留项目的大量投资。
特点介绍
XQuery有如下特点:
XQuery应用举例
·从Web Service中提取信息
·生成数据的摘要报告
·将XML转换为XHTML
·从Web文档中找寻信息
在了解XQuery之前,你应该首先了解
XML
HTML/XHTML
XPATH
参考手册
XQuery 1.0 和 XPath 2.0 分享相同的数据模型,并支持相同的函数和运算符。
相关函数
XQuery 构建在 XPath 表达式之上。XQuery 1.0 和 XPath 2.0 分享相同的数据模型,并支持相同的函数和运算符。
XPath Operators
XPath Functions
数据类型
XQuery 分享与 XML Schema 1.0 (XSD) 相同的数据类型。
XSD String
XSD Date
XSD Numeric
XSD Misc
代码演示
2005
2005
2003
2003
文件存储了书店中的若干本书以及他们的语言,分类,作者,出版年和价格。
如果我们想找出所有价格大于30的书名集合则可以写XQuery为
where 38349/price > 30
return 38349/title
doc是打开一个XML文档的函数,XQuery有一个函数库支持,提供了诸如数学计算,字符串操作等功能。XQuery1.0于XPATH2.0,
XSLT1.0共用同一套函数库。粗体部分是一个
XPATH的
表达式,他返回了所有书的集合。where子句是筛选条件。而return子句则用于选择结果并返回。XQuery具有和SQL类似的外观和结构,以及相似的表达力。
上述XQuery将返回
然后,我们想把所有书的名称组成一个排序列表并生成相应的HTML表格,则应该
order子句用于排序。将返回
下面是一些XQuery语法的基本规则:
·大小写敏感
·XQuery中的字符串可以使用单引或双引号
·XQuery中的变量用$前缀加名称表示
·XQuery中的注释在 (: 和 :)范围内
另外,作为高级功能,XQuery还提供了用户自定义函数功能
术语
节点
在 XQuery 中,有七种节点:元素、属性、文本、
命名空间、处理指令、注释、以及文档(根)节点。XML 文档是被作为节点树来对待的。树的根被称为文档节点或者根节点。
请看下面的 XML 文档:
2005
上面的 XML 文档中的节点例子:
基本值是无父或无子的节点。
基本值的例子:
基础语法
XQuery 对大小写敏感
XQuery 的元素、属性以及变量必须是合法的 XML 名称。
XQuery 变量由 “$” 并跟随一个名称来进行定义,举例,
XQuery 注释被 (: 和 :) 分割,举例,(: XQuery 注释 :)
条件表达
请看下面的例子:
then {data(/title)}
上面的例子的结果:
Everyday ItalianHarry PotterLearning XMLXQuery Kick Start 比较
在 XQuery 中,有两种方法来比较值。
通用比较:=, !=, <, <=, >, >=
值的比较:eq、ne、lt、le、gt、ge
总结
XQuery将成为一种用于描述对XML
数据源的查询的语言,具有精确、强大和易用的特点。其支持者认为针对XML的XQuery非常类似针对关系数据库的
SQL。对XQuery语言标准的定义工作已经于2007年初完成,版本为1.0
表达式可选取 bookstore 元素下的 book 元素下所有的 title 元素,并且其中的 price 元素的值必须大于 30。
下面这个
FLWOR表达式所选取的数据和上面的路径表达式是相同的:
where /price>30
return /title结果是:
where /price>30
order by /title
for 语句把 bookstore 元素下的所有 book 元素提取到名为 的
变量中。
where 语句选取了 price 元素值大于 30 的 book 元素。
order by 语句定义了排序次序。将根据 title 元素进行排序。
return 语句规定返回什么内容。在此返回的是 title 元素。
上面的 XQuery 表达式的结果: