XML文件books.xml中是如下代码:
<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>329.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>349.99</price>
</book>
<book category="WEB">
<title lang="en">Learning XML</title>
<author>Erik T. Ray</author>
<year>2003</year>
<price>339.95</price>
</book>
</bookstore>
文件存储了书店中的若干本书以及他们的语言,分类,作者,出版年和价格。
现在,如果我们想找出所有价格大于30的书名集合则可以写XQuery为
where $i/price > 30
return $i/title
doc是打开一个XML文档的函数,XQuery有一个函数库支持,提供了诸如数学计算,字符串操作等功能。XQuery1.0于XPATH2.0,
XSLT1.0共用同一套函数库。粗体部分是一个XPATH的
表达式,他返回了所有书的集合。where子句是筛选条件。而return子句则用于选择结果并返回。XQuery具有和SQL类似的外观和结构,以及相似的表达力。
上述XQuery将返回
<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>
然后,我们想把所有书的名称组成一个排序列表并生成相应的HTML表格,则应该
<ul>
{
order by $x
return <li>{$x}</li>
}
</ul>
order子句用于排序。将返回
<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>
这是一段合理的HTML代码
下面是一些XQuery语法的基本规则:
·大小写敏感
·元素,属性和变量名必须是合法的XML名称
·XQuery中的字符串可以使用单引或双引号
·XQuery中的变量用$前缀加名称表示
·XQuery中的注释在 (: 和 :)范围内
另外,作为高级功能,XQuery还提供了用户自定义函数功能