doc("books.xml")/bookstore/book[price<30]/title
看一个例子就懂了,选取books.xml中price节点值小于30的book节点下的title节点内容
for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
FLWOR 是 “For, Let, Where, Order by, Return” 的只取首字母缩写。
for 语句把 bookstore 元素下的所有 book 元素提取到名为 $x 的变量中。
where 语句选取了 price 元素值大于 30 的 book 元素。
order by 语句定义了排序次序。将根据 title 元素进行排序。
return 语句规定返回什么内容。在此返回的是 title 元素。
这里给出菜鸟教程的一个代码例子:
<ul>
{
for $x in doc("books.xml")/bookstore/book/title
order by $x
return <li>{$x}</li>
}
</ul>
输出结果:
<ul>
<li><title lang="en">Everyday Italian</title></li>
<li><title lang="en">Harry Potter</title></li>
<li><title lang="en">Learning XML</title></li>
<li><title lang="en">XQuery Kick Start</title></li>
</ul>
如果希望去除title元素,只选择title元素内部的数据
<ul>
{
for $x in doc("books.xml")/bookstore/book/title
order by $x
return <li>{data($x)}</li>
}
</ul>
结果如下:
<ul>
<li>Everyday Italian</li>
<li>Harry Potter</li>
<li>Learning XML</li>
<li>XQuery Kick Start</li>
</ul>
一些基本的语法规则:
XQuery 对大小写敏感
XQuery 的元素、属性以及变量必须是合法的 XML 名称。
XQuery 字符串值可使用单引号或双引号。
XQuery 变量由 "$"
并跟随一个名称来进行定义,举例,$bookstore
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>
declare function 前缀:函数名($参数 AS 数据类型)
AS 返回的数据类型
{
...函数代码...
}