XQuery表达式之条件表达式(Conditional Expression)

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

[如需转载请注明出处]

条件表达式实现了XQuery的分支功能,它的语法如下:

if (expr1) then expr2 else expr3

if,then,else都是关键字。如果expr1的有效布尔值(Effective Boolean Value)为true,则条件表达式评估expr2,如果是false则评估expr3。

那么有效布尔值是什么概念呢?

一个操作数的有效布尔值就是对该操作数调用fn:boolean函数返回的布尔值,定义如下:

1。如果操作数是空序列,其有效布尔值为false

2。如果操作数是一个序列并且第一个项是节点,其有效布尔值为true

3。如果操作数就是xs:boolean值或继承自xs:boolean,则直接返回操作数本身

4。如果操作数是xs:string,xdt:untypedAtomic,或继承自它们,如果其长度为0则其有效布尔值为false,如果其长度大于0,那么其有效布尔值为true

5。如果操作数是数值类型或继承自数值类型,如果操作数的值为NaN,或值为0,其有效布尔值为false,否则为true

6。其他任何情况下都抛错

下面是两个例子:

<cheap_books> {

for $book in document(“catalog/books.xml”)/books/book

return

if ($book/price < 10)

then $book

else ()

} </cheap_books>

这个例子中要判断有效布尔值的操作数是一个比较表达式,比较price的值和10的大小。

下面这个例子则是判断title属性是否存在

if ($book/@title)

then $book/sale

else $book/retail

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