XQuery 选择元素
-
定义和使用
在下面的示例中,我们将使用 “books.xml” 文档(与前几章相同的XML文件)。如前几章所述,我们正在选择和过滤具有 Path 表达式或 FLWOR 表达式的元素。查看以下FLWOR表达式:for $x in doc("books.xml")/bookstore/book where $x/price>30 order by $x/title return $x/title
for -(可选)将变量绑定到in表达式返回的每个项目let -(可选)where -(可选)指定条件order by -(可选)指定结果的排序顺序return - 指定要返回的结果 -
for 子句
for 子句将变量绑定到 in 表达式返回的每个项目。 for 子句导致迭代。 同一 FLWOR 表达式中可以有多个 for 子句。要在 for 子句中循环特定次数,可以使用 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 子句
接下来,我们要将 category 属性用作 HTML 列表中的 class 属性: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>