XQuery XPath


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程式。