我希望在 XQuery中创建一个if
没有部分的语句。else
例如:
<results>
{
if (5 = 5) then
<foo/>
}
<results>
我该怎么做呢?
我也试过这个:
<results>
{
if (5 = 5) then
<foo/>
else
return
}
<results>
虽然可以编译,但在运行时不起作用!
我希望在 XQuery中创建一个if
没有部分的语句。else
例如:
<results>
{
if (5 = 5) then
<foo/>
}
<results>
我该怎么做呢?
我也试过这个:
<results>
{
if (5 = 5) then
<foo/>
else
return
}
<results>
虽然可以编译,但在运行时不起作用!
if
XQuery中没有没有else
. 而是返回空序列()
,或任何合理的标识元素(如果未定义任何特定元素,这通常是您需要的)。
if ($foo eq "bar")
then
42
else
()
与过程语言相比,“no else statement”仅仅意味着“什么都不做” XQuery 是一种函数式语言,这也意味着每个操作都必须返回“某物”。如何进行“无”?可能可以声明“没有else
语句意味着返回空序列”,但 W3C XML 查询工作组似乎已经决定要求明确定义不返回任何内容。总而言之,这会导致更容易理解并且可能更好的代码,因为您必须考虑要返回的“else”值是什么;因为可能有很多合理的值:0
如果你加起来,1
如果相乘,空字符串""
用于连接不带分隔符的字符串,如果连接带分隔符的字符串,则为空序列,...
return
语句”使用“空”返回是不可能的,而是返回<return/>
当前上下文中的子元素,所以else return
仅仅是一个else ./return
. <return/>
如果当前上下文确实有孩子,而且如果根本没有绑定任何上下文,这不仅会失败(并返回一些东西) 。
返回一个空字符串不会返回任何内容,而是返回空字符串,它是一个值,甚至可能会在另一个地方打断打字。返回空字符串不是一般的解决方案,但可能在某些特定情况下。
您可以改用过滤器表达式:
<results>
{
<foo/> [5 = 5]
}
</results>