XQuery表达式之量化表达式(Quantified Expression)

王朝other·作者佚名  2006-03-24
窄屏简体版  字體: |||超大  

量化表达式比较简单,它类似于SQL中的exists 子句。它的语法如下:

[some | every] $var in expr ($anothervar in anotherexpr)* satisfies test_expr

some或every是量词,也是关键字。in子句可以有多个。

量化表达式的执行结果是一个boolean值,因为它一般做为谓词用在路径表达式中,或做为where子句用在FLWOR表达式中,

FLWOR表达式将在以后的blog中讲到,或做为条件表达式的判断条件使用。

执行时$var被绑定到expr计算出来的序列的每一个项中,对于每一次绑定,test_expr将会被执行,如果量词是some,

则只要存在一次绑定,使得test_expr的执行结果为true,那么整个量化表达式执行结果就为true,反之为false。

而如果量词是every,则必须所有的绑定,使得test_expr的执行结果为true时,整个量化表达式执行结果才为true,反之为false。

下面看几个例子:

1。every $part in /parts/part satisfies $part/@discounted

如果每一个part元素都有discounted属性,则表达式1返回true

2。some $emp in /emps/employee satisfies ($emp/bonus > 0.25 * $emp/salary)

如果至少有一个employee元素满足给定的比较表达式,则表达式2返回true

3。every $x in (1, 2, 3), $y in (2, 3, 4)

satisfies $x + $y = 4

在这个例子,每次绑定时,由(1,2,3)和(2,3,4)各取一项来进行绑定,因为共有3*3=9的绑定,

然后判断给定的比较表达式。该例返回false,如果把量词every换成some,则返回true。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航