XQuery笔记

XQuery笔记

简介

XQuery 相对于 XML,等同于 SQL 相对于数据库。
XQuery 被设计用来查询 XML 数据。
XQuery 也被称为 XML Query。
XQuery 被设计用来查询 XML 数据 - 不仅仅限于 XML 文件,还包括任何可以 XML 形态呈现的数据,包括HTML、XML数据库。
XQuery的用途:用来从 XML 文档查找和提取元素及属性的语言。
使用XQuery前,应具备XML、XPath的知识。

样例XML文件:
<?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>


XQuery 的基础语法规则

XQuery 对大小写敏感
XQuery 的元素、属性以及变量必须是合法的 XML 名称。
XQuery 字符串值可使用单引号或双引号。
XQuery 变量由 “$” 并跟随一个名称来进行定义,举例,$bookstore
XQuery 注释被 (: 和 :) 分割,举例,(: XQuery 注释 :)

XQuery 条件表达式

类似于存储过程中if then else表达式。
if ($x/@category="CHILDREN")
    then <child>{data($x/title)}</child>
else <adult>{data($x/title)}</adult>


XQuery 比较运算符

在 XQuery 中,有两种方法来比较值。
通用比较:=, !=, <, <=, >, >=
值的比较:eq、ne、lt、le、gt、ge

这两种比较方法的差异如下:
请看下面的 XQuery 表达式:
$bookstore//book/@q > 10

如果 q 属性的值大于 10,上面的表达式的返回值为 true。
$bookstore//book/@q gt 10


如果仅返回一个 q,且它的值大于 10,那么表达式返回 true。如果不止一个 q 被返回,则会发生错误。

XQuery函数

XQuery 使用函数来提取 XML 文档中的数据。
doc() 用于打开 "books.xml" 文件:
doc("books.xml")


XQuery路径表达式

XQuery 使用路径表达式在 XML 文档中通过元素进行导航,参考XPath路径表达式。
下面的路径表达式用于在 "books.xml" 文件中选取所有的 title 元素:
doc("books.xml")/bookstore/book/title

上面的 XQuery 可提取以下数据:
<title lang="en">Everyday Italian</title>
<title lang="en">Harry Potter</title>
<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>


XQuery谓语

XQuery 使用谓语来限定从 XML 文档所提取的数据,查看XPath谓语。
下面的谓语用于选取 bookstore 元素下的所有 book 元素,并且所选取的 book 元素下的 price 元素的值必须小于 30:
doc("books.xml")/bookstore/book[price<30]

上面的 XQuery 可提取到下面的数据:
<book category="CHILDREN">
  <title lang="en">Harry Potter</title>
  <author>J K. Rowling</author>
  <year>2005</year>
  <price>29.99</price>
</book>


XQuery FLWOR 表达式

FLWOR 是 "For, Let, Where, Order by, Return" 的只取首字母缩写。
FLWOR的语法类似SQL存储过程。
选取 bookstore 元素下的 book 元素下所有的 title 元素,并且其中的 price 元素的值必须大于 30的FLWOR表达式:
for $x in doc("books.xml")/bookstore/book
where $x/price>30
return $x/title










你可能感兴趣的:(xml,xquery)