我希望在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 Query工作组似乎已经决定要求,以明确地界定,而不是返回什么。总而言之,由于您必须考虑要返回的“ else”值是什么,因此这会使代码更易于理解,甚至可能更好。因为可能会有很多合理的值:0
如果您要1
累加一些东西,如果要相乘,则为空字符串""
用于连接不带分隔符的字符串,如果连接带分隔符的字符串,则为空序列,...
return
语句”使用“空”返回是不可能的,但是将<return/>
在当前上下文中返回子元素,而else return
仅仅是一个else ./return
。如果当前上下文确实有<return/>
子级,那么这不仅会失败(并返回某些内容),而且如果根本没有绑定上下文,这也会失败。
返回空字符串不会返回任何内容,而是空字符串,它是一个值,甚至可能会中断在其他位置的输入。返回空字符串不是一般解决方案,但在某些特定情况下可能会返回。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句