• 沒有找到結果。

XQuery 查詢語法 查詢語法 查詢語法 查詢語法

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 回傳結果

3.4 影音資料排程廣播 影音資料排程廣播 影音資料排程廣播 影音資料排程廣播