Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xpath 如何在XQuery中创建没有else的if语句?_Xpath_Xquery_Saxon_Xquery 3.0 - Fatal编程技术网

Xpath 如何在XQuery中创建没有else的if语句?

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>

我希望在XQuery中创建一个没有
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是一种函数语言,这也意味着每个操作都必须返回“某物”。“什么都不做”怎么办?也许可以声明“no
else
语句意味着返回空序列”,但W3CXML查询工作组似乎已经决定要求明确定义不返回任何内容。总而言之,这使得代码更容易理解,可能更好,因为您必须考虑返回的“else”值是什么;因为可能有很多合理的值:
0
如果你在加法,
1
如果相乘,空字符串
用于连接不带分隔符的字符串,空序列用于连接带分隔符的字符串

不要使用“空
return
语句” 不可能使用“空”返回,而是返回当前上下文中的
子元素,因此
else-return
仅是
else./return
。如果当前上下文确实有
子上下文,那么这不仅会失败(并返回一些内容),而且如果根本没有绑定上下文,也会失败

不要返回空字符串
返回空字符串并不会返回任何内容,而是返回空字符串,它是一个值,甚至可能会中断在其他位置的键入。返回空字符串不是一般的解决方案,但在某些特定情况下可能是这样。

您可以使用筛选器表达式:

<results>
   { 
       <foo/> [5 = 5]
   }
</results>

{ 
[5 = 5]
}
<results>
   { 
       <foo/> [5 = 5]
   }
</results>