XML實例文檔
我們將使用"books.xml"在下面的例子文件(same XML file as in the previous chapters) 。
選擇和過濾元件
正如我們在前面的章節中所看到的,我們選擇和過濾與任一路徑表達式或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>