最新的Web開發教程
 

XQuery的選擇和過濾


XML實例文檔

我們將使用"books.xml"在下面的例子文件(same XML file as in the previous chapters)

查看"books.xml"在瀏覽器中的文件


選擇和過濾元件

正如我們在前面的章節中所看到的,我們選擇和過濾與任一路徑表達式或FLWOR表達式的元素。

請看下面的FLWOR表達式:

for $x in doc("books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
  • 為- (optional)結合到由在表達式返回的每個項目的可變
  • 讓- (optional)
  • 式中- (optional)指定一個標準
  • 為了通過- (optional)指定結果的排序次序
  • 回報 - 規定了什麼要的結果返回

FOR子句

for子句結合由in表達式返回的每個項目的變量。 將在迭代子句的結果。 可以有多個在同一FLWOR表達式條款。

要循環的時間在為第一個具體的數字,你可以使用to關鍵字:

for $x in (1 to 5)
return <test>{$x}</test>

結果:

<test>1</test>
<test>2</test>
<test>3</test>
<test>4</test>
<test>5</test>

at關鍵字可以用來計算迭代:

for $x at $i in doc("books.xml")/bookstore/book/title
return <book>{$i}. {data($x)}</book>

結果:

<book>1. Everyday Italian</book>
<book>2. Harry Potter</book>
<book>3. XQuery Kick Start</book>
<book>4. Learning XML</book>

它也被允許與多於一個的在表達for子句。 使用逗號每個在表達分離:

for $x in (10,20), $y in (100,200)
return <test>x={$x} and y={$y}</test>

結果:

<test>x=10 and y=100</test>
<test>x=10 and y=200</test>
<test>x=20 and y=100</test>
<test>x=20 and y=200</test>

LET子句

let子句允許變量賦值和它避免重複相同的表達許多次。 let語句不會導致迭代。

let $x := (1 to 5)
return <test>{$x}</test>

結果:

<test>1 2 3 4 5</test>

WHERE子句

where子句是用於指定所述結果的一個或多個標準:

where $x/price>30 and $x/price<100

order by子句

order by子句用於指定結果的排序順序。 在這裡,我們要訂購按類別和標題的結果:

for $x in doc("books.xml")/bookstore/book
order by $x/@category, $x/title
return $x/title

結果:

<title lang="en">Harry Potter</title>
<title lang="en">Everyday Italian</title>
<title lang="en">Learning XML</title>
<title lang="en">XQuery Kick Start</title>

return子句

return語句規定的是要返回。

for $x in doc("books.xml")/bookstore/book
return $x/title

結果:

<title lang="en">Everyday Italian</title>
<title lang="en">Harry Potter</title>
<title lang="en">XQuery Kick Start</title>
<title lang="en">Learning XML</title>