可以把XQuery理解成XML中SQL语言。XQuery可以用来:
提取信息以便在网络服务中使用 生成摘要报告 把 XML 数据转换为 XHTML 为获得相关信息而搜索网络文档
要获取xml文档,需要使用doc()函数,例如:doc("books.xml")
得到doc之后,我们就可以如XPath一样取值,例如:doc("books.xml")//book/title,取得当前文档中所以book元素下的title元素。
同XPath一样,也可以使用限定词来取值,例如:doc("books.xml")//book[price=30]/title,取得当前文档中所以价格等于30的书的title元素。
规则:
XQuery 对大小写敏感 XQuery 的元素、属性以及变量必须是合法的 XML 名称。 XQuery 字符串值可使用单引号或双引号。 XQuery 变量由 “$” 并跟随一个名称来进行定义,举例,$bookstore XQuery 注释被 (: 和 :) 分割,举例,(: XQuery 注释 :)
二、XQuery语句和表达式
语句简单说起来就是FLWOR,分别是:for,let,where,order by和return的首字母。
for..in..:用于遍历,例如: for $x in doc("books.xml")//book,在所有的book元素中遍历,其中$x是临时变量
let:赋值语句,例如:let $x:= 3,把3赋给x;let $x:=(1 to 5),把x赋值为1到5 (1 2 3 4 5)
where:条件判断语句,例如:where $x>30 and $x<60,可以用and或or把多个条件联接
order by:排序语句,例如:order by $x,按变量x的值排序,可以使用“,”进行多重排序。
return:返回语句,用于返回结果,例如:return <li>$x</li>
在XQuery中可以使用if..then..else条件表达式。例如:
if ($x>30) then (..) else (..);注:if 和else的()是必须的。
选择和过滤:
可以使用to来决定遍历的值或次数,例如:for $x in (1 to 5)
可以使用at来纪录迭代的次数,例如: for $x at $i in doc("books.xml")//book
可以使用多个in来实现多重迭代,例如:for $x in .., $y in ...
三、XQuery元素关系
和XPath一样有七种元素。其中无父子关系的值称为基本值,例如文本结点内容,属性值等等;基本值或结点称为item;结点与结点之间可能有父子或辈份关系,例如父结点、子结点、兄弟结点、先辈结点或晚辈结点。
四、查询结果
可以通过增添元素来修改或转换返回结果。例如:
<html><body>
<ul>
for $x in doc("books.xml")//book/title
return <li>$x</li>
</ul
</body>
五、函数
XPath、XQuery和XSL使用相同的函数库。具体的请查询帮助。以下举几例:
也可以自定义函数。