Xpath 如何在XQuery中创建没有else的if语句?
我希望在XQuery中创建一个没有Xpath 如何在XQuery中创建没有else的if语句?,xpath,xquery,saxon,xquery-3.0,Xpath,Xquery,Saxon,Xquery 3.0,我希望在XQuery中创建一个没有else部分的if语句 例如: <results> { if (5 = 5) then <foo/> } <results> { 如果(5=5),则 } 我该怎么做 我也试过: <results> { if (5 = 5) then <foo/> else return } <results>
else
部分的if
语句
例如:
<results>
{
if (5 = 5) then
<foo/>
}
<results>
{
如果(5=5),则
}
我该怎么做
我也试过:
<results>
{
if (5 = 5) then
<foo/>
else
return
}
<results>
{
如果(5=5),则
其他的
返回
}
虽然可以编译,但在运行时不起作用 没有
else的XQuery中没有if
语句。返回空序列,而不是()
,或者返回任何合理的序列(如果没有定义任何特定的内容,通常是您需要的)
与过程语言不同,“no-else语句”只是表示“不做任何事情”,XQuery是一种函数语言,这也意味着每个操作都必须返回“某物”。“什么都不做”怎么办?也许可以声明“noelse
语句意味着返回空序列”,但W3CXML查询工作组似乎已经决定要求明确定义不返回任何内容。总而言之,这使得代码更容易理解,可能更好,因为您必须考虑返回的“else”值是什么;因为可能有很多合理的值:0
如果你在加法,1
如果相乘,空字符串“
用于连接不带分隔符的字符串,空序列用于连接带分隔符的字符串
不要使用“空return
语句”
不可能使用“空”返回,而是返回当前上下文中的
子元素,因此else-return
仅是else./return
。如果当前上下文确实有
子上下文,那么这不仅会失败(并返回一些内容),而且如果根本没有绑定上下文,也会失败
不要返回空字符串
返回空字符串并不会返回任何内容,而是返回空字符串,它是一个值,甚至可能会中断在其他位置的键入。返回空字符串不是一般的解决方案,但在某些特定情况下可能是这样。您可以使用筛选器表达式:
<results>
{
<foo/> [5 = 5]
}
</results>
{
[5 = 5]
}
<results>
{
<foo/> [5 = 5]
}
</results>