XQuery 相对于 XML,等同于 SQL 相对于数据库。设计用来查询 XML 数据。- 不仅仅限于 XML 文件,还包括任何可以 XML 形态呈现的数据,包括数据库。

FLWOR 是 "For, Let, Where, Order by, Return" 的只取首字母缩写。

for $x in doc("books.xml")/bookstore/book

where $x/price>30

order by $x/title

return $x/title

<ul>

{

for $x in doc("books.xml")/bookstore/book/title

order by $x

return <li>{ data($x)}</li>

}

</ul>

基本值(或称原子值,Atomic value)

基本值是无父或无子的节点。

基本值的例子:

J K. Rowling

"en"

项目

项目是基本值或者节点。

XQuery 的基础语法规则:

一些基本的语法规则:

XQuery 对大小写敏感

XQuery 的元素、属性以及变量必须是合法的 XML 名称。

XQuery 字符串值可使用单引号或双引号。

XQuery 变量由 “$” 并跟随一个名称来进行定义,举例,$bookstore

XQuery 注释被 (: 和 :) 分割,例如,(: XQuery 注释 :)

XQuery 条件表达式

"If-Then-Else" 可以在 XQuery 中使用。

如:for $x in doc("books.xml")/bookstore/book

return  if ($x/@category="CHILDREN")

then <child>{data($x/title)}</child>

else <adult>{data($x/title)}</adult>

XQuery 比较

在 XQuery 中,有两种方法来比较值。

通用比较:=, !=, <, <=, >, >=

值的比较:eq、ne、lt、le、gt、ge

添加属性和文本:<ul>

{

for $x in doc("books.xml")/bookstore/book

order by $x/title

return <li class="{data($x/@category)}">{data($x/title)}</li>

}

</ul>

for 语句可将变量捆绑到由 in 表达式返回的每个项目。for 语句可产生迭代。在同一个 FLWOR 表达式中可存在多重 for 语句。

如需在一个 for 语句中进行指定次数地循环,您可使用关键词 to :

for $x in (1 to 5)

return <test>{$x}</test>

关键词 at 可用于计算迭代:

for $x at $i in doc("books.xml")/bookstore/book/title

return <book>{$i}. {data($x)}</book>

在 for 语句中同样允许多个 in 表达式。请使用逗号来分割每一个 in 表达式:

for $x in (10,20), $y in (100,200)

return <test>x={$x} and y={$y}</test>

let 语句

let 语句可完成变量分配,并可避免多次重复相同的表达式。let 语句不会导致迭代。

let $x := (1 to 5)

return <test>{$x}</test>

函数命名空间的默认前缀是 fn:。

提示:函数经常被通过 fn: 前缀进行调用,例如 fn:string()。不过,由于 fn: 是命名空间的默认前缀,所以函数名称不必在被调用时使用前缀。

函数调用可与表达式一同使用。请看下面的例子:

例1:在元素中

<name>{upper-case($booktitle)}</name>

例2: 在路径表达式的谓语中

doc("books.xml")/bookstore/book[substring(title,1,5)='Harry']

例3: 在 let 语句中

let $name := (substring($booktitle,1,4))

XQuery 用户定义函数

如果找不到所需的 XQuery 函数,你可以编写自己的函数。

可在查询中或独立的库中定义用户自定义函数。

语法

declare function 前缀:函数名($参数 AS 数据类型)

AS 返回的数据类型

{

(: ...函数代码... :)

};

关于用户自定义函数的注意事项:

请使用 declare function 关键词

函数名须使用前缀

参数的数据类型通常与在 XML Schema 中定义的数据类型一致

函数主体须被花括号包围

xquery的更多相关文章

  1. XQuery的 value() 方法、 exist() 方法 和 nodes() 方法

    Xml数据类型 /*------------------------------------------------------------------------------+ #| = : = : ...

  2. 转载---SQL Server XML基础学习之<6>--XQuery的 value() 方法、 exist() 方法 和 nodes() 方法

    /*------------------------------------------------------------------------------+ #| = : = : = : = : ...

  3. T-SQL XQuery (XML路径查询) (转)http://blog.csdn.net/Beirut/article/details/8150116

    /* T-SQL 支持用于查询 XML 数据类型的 XQuery 语言的子集. XQuery 基于现有的 XPath 查询语言,并支持更好的迭代.更好的排序结果以及构造必需的 XML 的功能. 在前面 ...

  4. 转载---SQL Server XML基础学习之<5>--XQuery(query)

    本章写一些SQL Server XML的一些XQuery基础语法,主要讲的query查询语法 T-SQL 支持用于查询 XML 数据类型的 XQuery 语言的子集. XQuery 基于现有的 XPa ...

  5. 转载--SQL Server 2005的XQuery介绍

    原文地址: http://bbs.51cto.com/thread-458009-1-1.html   引用: 摘要 本文介绍了SQL Server 2005能够支持的XQuery的各方面特性如FLW ...

  6. XPath与Xquery

    XPath 和 XQuery 在某些方面很相似.XPath 还是 XQuery 完整不可分割的一部分.这两种语言都能够从 XML 文档或者 XML 文档存储库中选择数据.本文简要介绍了 XPath 和 ...

  7. Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 2 -使用XQuery 查询XML数据

    XQuery 是一个浏览/返回XML实例的标准语言. 它比老的只能简单处理节点的XPath表达式更丰富. 你可以同XPath一样使用.或是遍历所有节点,塑造XML实例的返回等. 作为一个查询语言, 你 ...

  8. XQuery 术语

    XQuery 术语 节点 在 XQuery 中,有七种节点:元素.属性.文本.命名空间.处理指令.注释.以及文档(根)节点.XML 文档是被作为节点树来对待的.树的根被称为文档节点或者根节点. 请看下 ...

  9. XQuery:查询任何可作为 XML 形态呈现的数据,包括数据库

    XQuery 也被称为 XML Query,被设计用来查询 XML 数据. 学习这个 需要知道 HTML / XHTML XML / XML 命名空间 XPath XML 实例文档 我们将在下面的例子 ...

随机推荐

  1. CSS+DIV+JQuery实际的视频汇总

    在牛腩中学习过CSS和DIV.在JS中学习过CSS+JS 封装,在这里又回想了一遍,也作为查漏补缺,也算比較系统的复习了一遍吧. css核心内容主要包含四个方面:标准流.盒子模型,浮动和定位,而在B/ ...

  2. Map <STL>

    map的使用方法: #include <cstdio> #include <map> #include <string> using namespace std; ...

  3. ftp server来源分析20140602

    ftp  server学习位和源代码分析片 记录自己的第一个开源的分析过程: 从源代码:野狐灯(我接下来的几篇文章是从源头:野狐灯,每个以下哪项不是他们设置.) 20140602 Ftp的源码目录例如 ...

  4. MVC6项目

    解读ASP.NET 5 & MVC6系列(2):初识项目 2015-05-14 09:08 by 汤姆大叔, 2866 阅读, 19 评论, 收藏, 编辑 初识项目 打开VS2015,创建We ...

  5. oracle_表分区

    一. 分区表理论知识 Oracle提供了分区技术以支持VLDB(Very Large DataBase).分区表通过对分区列的判断,把分区列不同的记录,放到不同的分区中.分区完全对应用透明. Orac ...

  6. SQL 把表中字段存储的逗号隔开内容转换成列表形式

    原文:[原创]SQL 把表中字段存储的逗号隔开内容转换成列表形式 我们日常开发中,不管是表设计问题抑或是其他什么原因,或多或少都会遇到一张表中有一个字段存储的内容是用逗号隔开的列表. 具体效果如下图: ...

  7. Swift入门教程:基本语法大全

    原文:Swift入门教程:基本语法大全       简介:                                                                        ...

  8. 如何清除应用程序承载 WebBrowser 控件时缓存

    原文:如何清除应用程序承载 WebBrowser 控件时缓存 http://support.microsoft.com/kb/262110/zh-cn察看本文应用于的产品 function loadT ...

  9. gnu 扩展之#和##

    转自:http://chongsoft.bokee.com/5816474.html 今天测试了宏定义中的 "#" 和 "##" 的区别. 结果如下: &quo ...

  10. Swift入门教程:基本语法(一)

          简介:                                                                                       什么是S ...