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

来源:互联网 发布:程序员star法则简历 编辑:程序博客网 时间:2024/05/01 19:29
[如需转载请注明出处]
条件表达式实现了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
原创粉丝点击