本文章部分资料参考w3school。
一、概述
XQuery = XML Query,是W3C所制定的一套标准 引用w3school对 XQuery最佳解释的方式是:XQuery 相对于 XML 的关系,等同于 SQL 相对于数据库表的关系。
XQuery 被设计用来查询 XML 数据 – 不仅仅限于 XML 文件,还包括任何可以 XML 形态呈现的数据,包括数据库。
二、语法
- xquery对大小写敏感。
- xquery的元素、属性以及变量必须是合法的xml名称。
- xquery字符串值可使用单引号或双引号。
- xquery变量由“$”并跟随一个名称来定义,例:$str。
- xquery注释被(:和:)分割,例:(:这是xquery注释:)。
三、FLWOR表达式
FLWOR表达式通常由:for-let-where-order by-return首字母合并而来,音同单词‘flower’(鲜花),FLWOR字母顺序由xquery语法而定,不可变更。
for:将某一节点下的所有元素依次赋值到变量中。
let:语句定义变量。
where:语句给出选取条件,用于 过滤绑定的结果。
order by:语句定义排序次序,asending升序或descending降序。
return:语句规定返回结果集。
语法实例:
for $for_var in for_expression
let $let_var:=let_expression
where 子句
order by 子句
return 子句
其中for和let两者可以不出现,但是不能同时不出现。而where和order by子句是可以同时不出现的,也就是说他们是可选的。
for和let都是用于绑定变量,用于迭代产生中间结果。在多个文档连接查询的时候以及重新组织结果时非常有用。
for和let区别在于for会产生多个绑定,而let只产生一次绑定。
例:
for:
let:
四、条件表达式(if-then-else)
if-then-else在xquery中做条件选择使用
请看下面例子:
请注意”if-then-else“语法:if表达式后的圆括号是必需的,else也是必需的,如果else没有语句,仅仅写else()也是可以的。
五、简单实列
下面举例说明FLWOR表达式的应用。
<?xml version=”1.0″ encoding=”ISO-8859-1″?>
<bookstore>
<book category=”COOKING”>
<title lang=”en”>Everyday Italian</title>
<author>Giada De Laurentiis</author>
<year>2005</year>
<price>30.00</price>
</book>
<book category=”CHILDREN”>
<title lang=”en”>Harry Potter</title>
<author>J K. Rowling</author>
<year>2005</year>
<price>29.99</price>
</book>
<book category=”WEB”>
<title lang=”en”>XQuery Kick Start</title>
<author>James McGovern</author>
<author>Per Bothner</author>
<author>Kurt Cagle</author>
<author>James Linn</author>
<author>Vaidyanathan Nagarajan</author>
<year>2003</year>
<price>49.99</price>
</book>
<book category=”WEB”>
<title lang=”en”>Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>39.95</price>
</book>
</bookstore>
1、假设bookstore这个collection下面的book.xml纪录了一些关于书的信息,现在要返回2005年之前出版的书
2、说明FLWOR用于连接查询例子
3、FLWOR还可以嵌套使用
4、xquery本身没有提供group by子句用于分组,但是我们可以通过嵌套的for或let达到分组功能
六、XQuery函数
xquery含有超个100个内建函数。这些函数可用于字符串值、数值、日期以及时间比较、节点和QName操作、序列操作、逻辑值等。
内附xquery内建函数链接,有兴趣的同学可以点击连接查看:http://www.w3school.com.cn/xpath/xpath_functions.asp
同样的,xquery也提供用户自定义函数:
语法:
declare function 前缀:函数名($参数 AS 数据类型)
AS 返回的数据类型
{
(:函数代码:)
}
关于用户自定义的注意事项:
- 请使用declare function关键字
- 函数名必须使用前缀
- 参数的数据类型通常与在xml schema中定义的数据类型一致
- 函数主体需被花括号包围
一个在查询中声明用户自定义函数的例子:
七、总结
关于xquery的探索就分享到这里了,笔者在文中对xquery测试所使用的是国外名为 Stylus Studio的一款编辑器。这玩意是收费的。此款编辑器功能笔者也在探索当中,所以就不在这里描述这玩意怎么使用了。
xquery除了对xml文档进行操作以外其实还支持对数据表的操作,这个也是笔者亲手测试过的啦,具体操作就不说了。有兴趣的朋友可以在评论留言,互相探讨下。如有错误,欢迎指证!
今天的文章探索XQuery分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/7494.html