XQuery 語言並非使用 XML 語法,其基本規則,如下所示:
XQuery 語言區分英文字母大小寫,Items、items 和 ITEMS 是不同的名 稱,通常使用小寫的英文字母。
XQuery 程式碼的元素、屬性、函數和變數名稱必須是合法的 XML 名 稱,可以加上名稱空間的字首。
資料型態:
XQuery 的基本資料型態和 XML Schema 內建資料型態相同,如下所示:
布林(Boolean)資料型態:布林值 true 或 false。
數字(Number)資料型態:包含整數和浮點數值。
字串(Strings)資料型態:使用單引號或雙引號括起的字元集合。
日期時間的資料型態:代表日期、時間和期間。
XML 相關的資料型別:例如:QName 等資料型態。
變數與文字值:
在 XQuery 程式碼中使用的變數並不需事先宣告,而變數是以「$」符號開 始的合法 XML 名稱。例如:一些 XQuery 變數範例,如下所示:
45
$x、$y、$name、$book
XQuery 的文字值(Literal Values)主要分為三種型態,如下所示:
字串(Strings):XQuery 的字串可以使用單引號或雙引號括起來的字元集 合。例如:”資訊工程系”。
數字(Numbers):XQuery 的數字可以是整數或浮點數。例如:1、99.8。
建構型態:使用特殊建構的特殊型態。例如:日期 xs:date(“2008-05-09”)。
XQuery 選取與過濾元素一共有兩種方式,一種為路徑運算式,不過此方式 過於簡單,因此只能選取元素或屬性而已;另一種則是使用 FLWOR 運算式,
FLWOR 是一種功能更為強大的運算式。
FLWOR 運算式主要是由 for、let、where、order by 和 return 子句所組成,五 種子句類型如下所示:
For 子句:可以將 in 指令後路徑運算式取得的順序,依序指定給前的變 數,每次一個項目,直到順序的最後一個項目為止。
Let 子句:用來指定 XQuery 變數的值,變數值可以是項目或順序。
Where 子句:指定條件運算式來進一步過濾查詢結果,只有當運算式為 true 時,才執行 return 子句。
Order by 子句:可以指定輸出結果的排序方式。除此之外,我們可以使 用「,」符號指定多個排序方式。
Return 子句:輸出查詢的結果,如果是使用路徑運算式,則就是輸出選 取的節點內容。
我們可以藉由以下的例子,來說明 FLWOR 運算式的寫法,如下所示:
<?xml version="1.0" encoding="Big5" ?>
-
<
videoroot>
-
<
video>
<
name>
實驗實驗 DIY51實驗實驗</
name>
<
id>
1244295346384</
id>
46
47
<
format>
WMV</
format>
<
source>
XML 實驗室實驗室實驗室實驗室</
source>
<
rights>
佐峰佐峰佐峰佐峰</
rights>
<
date>
2009/06/06 09:35:46</
date>
<
kind>
教育教育.NHK 百科教育教育 百科百科百科.實驗實驗實驗實驗 DIY</
kind>
<
description>
燃料燃料燃料燃料</
description>
</
video>
</
videoroot>
程式碼 3.5 XQuery:XML 檔案範例
XQuery 程式內容:
<db>
{
for $video in doc(“video.xml”) /videoroot/video where $video/size > 100
order by $video/duration return $video/id }
</db>
程式碼 3.6 XQuery: XQuery 語言 其程式回傳結果為:
<db>
<description>玻璃水</description>
<description>泡泡研究</description>
<description>燃料</description>
</db>
程式碼 3.7 XQuery: XQuery 回傳結果