xquery
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的更多相关文章
- XQuery的 value() 方法、 exist() 方法 和 nodes() 方法
Xml数据类型 /*------------------------------------------------------------------------------+ #| = : = : ...
- 转载---SQL Server XML基础学习之<6>--XQuery的 value() 方法、 exist() 方法 和 nodes() 方法
/*------------------------------------------------------------------------------+ #| = : = : = : = : ...
- T-SQL XQuery (XML路径查询) (转)http://blog.csdn.net/Beirut/article/details/8150116
/* T-SQL 支持用于查询 XML 数据类型的 XQuery 语言的子集. XQuery 基于现有的 XPath 查询语言,并支持更好的迭代.更好的排序结果以及构造必需的 XML 的功能. 在前面 ...
- 转载---SQL Server XML基础学习之<5>--XQuery(query)
本章写一些SQL Server XML的一些XQuery基础语法,主要讲的query查询语法 T-SQL 支持用于查询 XML 数据类型的 XQuery 语言的子集. XQuery 基于现有的 XPa ...
- 转载--SQL Server 2005的XQuery介绍
原文地址: http://bbs.51cto.com/thread-458009-1-1.html 引用: 摘要 本文介绍了SQL Server 2005能够支持的XQuery的各方面特性如FLW ...
- XPath与Xquery
XPath 和 XQuery 在某些方面很相似.XPath 还是 XQuery 完整不可分割的一部分.这两种语言都能够从 XML 文档或者 XML 文档存储库中选择数据.本文简要介绍了 XPath 和 ...
- Querying Microsoft SQL Server 2012 读书笔记:查询和管理XML数据 2 -使用XQuery 查询XML数据
XQuery 是一个浏览/返回XML实例的标准语言. 它比老的只能简单处理节点的XPath表达式更丰富. 你可以同XPath一样使用.或是遍历所有节点,塑造XML实例的返回等. 作为一个查询语言, 你 ...
- XQuery 术语
XQuery 术语 节点 在 XQuery 中,有七种节点:元素.属性.文本.命名空间.处理指令.注释.以及文档(根)节点.XML 文档是被作为节点树来对待的.树的根被称为文档节点或者根节点. 请看下 ...
- XQuery:查询任何可作为 XML 形态呈现的数据,包括数据库
XQuery 也被称为 XML Query,被设计用来查询 XML 数据. 学习这个 需要知道 HTML / XHTML XML / XML 命名空间 XPath XML 实例文档 我们将在下面的例子 ...
随机推荐
- 值得关注的10个python语言博客(转)
大家好,还记得我当时学习python的时候,我一直努力地寻找关于python的博客,但我发现它们的数量很少.这也是我建立这个博客的原因,向大家分享我自己学到的新知识.今天我向大家推荐10个值得我们关注 ...
- React实践
React实践(一) 该实践取自官方教程:https://github.com/reactjs/react-tutorial 主要是自实现的过程以及一些心得体会 该实践是实现一个评论框. 一个展示 ...
- 第19章 解释器模式(Interpreter Pattern)
原文 第19章 解释器模式(Interpreter Pattern) 解释器模式 导读:解释器模式,平常用的比较的少,所以在写这个模式之前在博客园搜索了一番,看完之后那叫一个头大.篇幅很长,我鼓足了劲 ...
- xcode于Archive当产生安装包遇到ld: library not found for -lPods
此问题是由能力很困扰,通常有以下几个方案 进target的 Build Phases- Link binary Library.到场libPods.a,假设是红.删,能够 其他解决方案 Build S ...
- C/C++各种类型int、long、double、char表示范围(最大和最小)
#include<iostream> #include<string> #include <limits> using namespace std; int mai ...
- hdu Word Amalgamation(map)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1113 找单词 #include <iostream> #include <strin ...
- Linq入门演练---(2)lambda表达式
今天大家一同学习下lambda表达式, lambda表达式使用起来更方便, lambda表达式其实是一个匿名函数,使用的运算符为=> 语法: (参数)=>表达式 如果只有一个参数,可以不使 ...
- EntityFramework:状态变化与方法的关系
一.约定 OnModelCreated 有一些限制需要注意,例如: 1.表名不支持使用标签进行标注 2.最小长度在 OnModelCreated 中不支持 3.正则表达式在 O ...
- Skype发布视频API
原文:Skype发布视频API 相信很多人对Skype多少都应该有一些了解,如果以前没有使用过它的服务的话,也应该在最近的新闻中听说过它的大名.因为,它和我们每天都在接触的公司--Mircrosoft ...
- linux_coom _ Linux文件比较,文本文件的交集、差集与求差
交集和差集操作在集合论相关的数学课上经常用到,不过,在Linux下 对文本进行类似的操作在某些情况下也很有用. comm命令 comm命令可以用于两个文件之间的 比较,它有一些选项可以用来调整输出,以 ...