Upelee na Ukisia wa XQuery
选择和过滤元素
正如在前面的章节所看到的,我们使用路径表达式或 FLWOR 表达式来选取和过滤元素。
请看下面的 FLWOR 表达式:
kufor $x in doc("books.xml")/bookstore/book where $x/price>30 order by $x/title kutowa $x/title
- for
- (可选) 向每个由 in 表达式返回的项目捆绑一个变量
- let
- (可选)
- where
- (可选) 设定一个条件
- order by
- (可选) 设定结果的排列顺序
- return
- 规定在结果中返回的内容
for 语句
for 语句可将变量捆绑到由 in 表达式返回的每个项目。for 语句可产生迭代。在同一个 FLWOR 表达式中可存在多重 for 语句。
Ili kufungua mara kimoja ya kila muda kwa sababu ya for statement, unaweza kutumiakataja to :
kwa $x in (1 kwa 5) kutowa <test>{$x}</test>
Matokeo:
<test>1</test>2 3 4 5
关键词 at 可用于计算迭代:
for $x at $i in doc("books.xml")/bookstore/book/title return{$i}. {data($x)}
Matokeo:
1. Everyday Italian 2. Harry Potter 3. XQuery Kick Start 4. Learning XML
在 for 语句中同样允许多个 in 表达式。请使用逗号来分割每一个 in 表达式:
for $x in (10,20), $y in (100,200) returnx={$x} and y={$y}
Matokeo:
x=10 and y=100 x=10 and y=200 x=20 and y=100 x=20 and y=200
let 语句
let 语句可完成变量分配,并可避免多次重复相同的表达式。let 语句不会导致迭代。
tumia $x := (1 to 5) kutowa <test>{$x}</test>
Matokeo:
<test>1 2 3 4 5</test>
Kutukutia where
Kutukutia where ina hataa ya kumaliza mazingira ya kumaliza matokeo kwa kumaliza moja au zaidi ya mizingira (mizingira).
tumia where $x/price>30 and $x/price<100
Kutukutia order by
Kutukutia order by ina hataa ya kumaliza mazingira ya uharibifu wa matokeo. Hapa, tunatokana na kufichia matokeo kwa kuzingatia category na title:
kufor $x in doc("books.xml")/bookstore/book tumia order by $x/@category, $x/title kutowa $x/title
Matokeo:
<title lang="en">Harry Potter</title> <title lang="en">Mengineza Kijitokeza</title> <title lang="en">Learning XML</title> <title lang="en">XQuery Kick Start</title>
Kutukutia:
Kutukutia ni ina hataa ya kuwa inatangazwa. Kutukutia ni inasababisha kutowa:
kufor $x in doc("books.xml")/bookstore/book kutowa $x/title
Matokeo:
<title lang="en">Mengineza Kijitokeza</title> <title lang="en">Harry Potter</title> <title lang="en">XQuery Kick Start</title> <title lang="en">Learning XML</title>