Marklogic学习 —— XQuery语法基础4

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>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cj96248

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值