XQuery XPath
精华
小牛编辑
192浏览
2023-03-14
XQuery兼容XPath,它使用XPath表达式来限制XML集合上的搜索结果。 有关如何使用XPath的更多详细信息,请参阅我们的XPath教程。
回想一下我们在上面几小节中用来获取书籍列表的以下XPath表达式。
doc("books.xml")/books/book
XPath示例
我们将使用books.xml文件并在这个文件上应用XQuery。文件:books.xml 的内容如下所示 -
<?xml version="1.0" encoding="UTF-8"?>
<books>
<book category="JAVA">
<title lang="en">15天搞定Java</title>
<author>Maxsu</author>
<year>2015</year>
<price>30.00</price>
</book>
<book category="DOTNET">
<title lang="en">15天搞定.Net</title>
<author>Susen</author>
<year>2018</year>
<price>40.50</price>
</book>
<book category="XML">
<title lang="en">3天搞定XQuery</title>
<author>Yizhi</author>
<author>Maxsu</author>
<year>2016</year>
<price>50.00</price>
</book>
<book category="XML">
<title lang="en">24小时搞定XPath</title>
<author>Jazz Bee</author>
<year>2019</year>
<price>16.50</price>
</book>
</books>
在这里给出了三个版本的XQuery语句,它们实现了显示价格值大于30
的书名。
XQuery - 版本1
(: read the entire xml document :)
let $books := doc("books.xml")
for $x in $books/books/book
where $x/price > 30
return $x/title
输出结果如下所示 -
<title lang="en">15天搞定.Net</title>
<title lang="en">3天搞定XQuery</title>
XQuery - 版本2
(: read all books :)
let $books := doc("books.xml")/books/book
for $x in $books
where $x/price > 30
return $x/title
输出结果如下所示 -
<title lang="en">15天搞定.Net</title>
<title lang="en">3天搞定XQuery</title>
XQuery - 版本3
(: read books with price > 30 :)
let $books := doc("books.xml")/books/book[price > 30]
for $x in $books
return $x/title
输出结果如下所示 -
<title lang="en">15天搞定.Net</title>
<title lang="en">3天搞定XQuery</title>
注:要验证结果,请将books.xqy 的内容(在XQuery开发环境章节中给出)替换为上面的XQuery表达式,然后执行XQueryTester java程序。