1.一个完整的FLWOR语法
for $prod in doc("/product/catalog.xml")//product
let $prodDept := $prod/@dept
where $prodDept = "南极人" or $prodDept = "果国际"
return $prod/name
返回:
<name language="cn">毛呢外套</name>
<name language="cn">牛仔裤</name>
2.范围表达式
for $i in 1 to 3
return <ele>{$i}</ele>
返回:
<ele>1</ele>
<ele>2</ele>
<ele>3</ele>
3.多个for语句叠加
for $i in (1, 2)
for $j in ("a", "b")
return<ele>i is {$i} and j is {$j}</ele>
返回:
<ele>i is 1 and j is a</ele>
<ele>i is 1 and j is b</ele>
<ele>i is 2 and j is a</ele>
<ele>i is 2 and j is b</ele>
4.一个for语句绑定多个变量
for $i in (1, 2), $j in ("a", "b")
return <ele>i is {$i} and j is {$j}</ele>
返回:
<ele>i is 1 and j is a</ele>
<ele>i is 1 and j is b</ele>
<ele>i is 2 and j is a</ele>
<ele>i is 2 and j is b</ele>
5.一个let语句绑定范围表达式
let $i := (1 to 3)
return <ele>{$i}</ele>
返回:
<ele>1 2 3</ele>
6.for语句与let语句混合
let $doc := doc("/product/catalog.xml")
for $prod in $doc//product
let $prodDept := $prod/@dept
let $prodName := $prod/name
where $prodDept = "美够"
return $prodName
返回:
<name language="cn">半身裙</name>
<name language="cn">百褶裙</name>
7.一个where语句含有多个表达式
for $prod in doc("/product/catalog.xml")//product
let $prodDept := $prod/@dept
where $prod/number > 1000
and exists($prod/colorChoices)
and ($prodDept = "果国际" )
return $prod
返回:
<product dept="果国际">
<number>1697</number>
<name language="cn">牛仔裤</name>
<colorChoices>蓝色</colorChoices>
<desc>我最喜欢<i>A字裙</i></desc>
</product>
8.量化表达式含有some
some $dept in doc("/product/catalog.xml")//product/@dept
satisfies ($dept = "果国际")
返回:
true
9.量化表达式含有every
every $dept in doc("/product/catalog.xml")//product/@dept
satisfies ($dept = "果国际")
返回:
false
10.量化表达式含有not
not(some $dept in doc("/product/catalog.xml")//product/@dept
satisfies ($dept = "果国际"))
返回:
false
11.多变量的量化表达式
some $i in (1 to 3), $j in (10, 11)
satisfies $j - $i = 7
返回:
true
12.双向合并
for $item in doc("/product/order.xml")//item,
$prod in doc("/product/catalog.xml")//product
where $item/@num = $prod/number
return <item num="{$item/@num}"
name="{$prod/name}"
quan="{$item/@quantity}"/>
返回:
<item num="100873" name="连衣裙" quan="1"></item>
<item num="4954" name="半身裙" quan="1"></item>
<item num="2561" name="百褶裙" quan="2"></item>
<item num="1697" name="牛仔裤" quan="1"></item>
<item num="1697" name="牛仔裤" quan="1"></item>
<item num="6380" name="毛呢外套" quan="1"></item>
13.三向合并
for $item in doc("/product/order.xml")//item,
$prod in doc("/product/catalog.xml")//product,
$price in doc("/product/prices.xml")//prod
where $item/@num = $prod/number and $prod/number = $price/@num
return <item num="{$item/@num}"
name="{$prod/name}"
price="{$price/price}"/>
返回:
<item num="100873" name="连衣裙" price="299"></item>
<item num="4954" name="半身裙" price="99"></item>
<item num="6380" name="毛呢外套" price="699"></item>
14.外链接Outer join
for $prod in doc("/product/catalog.xml")//product
return <product number="{$prod/number}">{
attribute price
{for $price in doc("/product/prices.xml")//prod
where $prod/number = $price/@num
return $price/price}
}</product>
返回:
<product number="100873" price="299"></product>
<product number="6380" price="699"></product>
<product number="4954" price="99"></product>
<product number="2561" price=""></product>
<product number="1697" price=""></product>