我是 XQuery 的新手。null
请指导我解决下面的问题,如果下面的表达式没有给出任何值,我想将值作为字符串返回。
目前,输出不显示“名称”字段本身。我想有一个名字null
。例如-
if (IsNull(expression),null,expression)
$output.dataAccessResponse[1]/*:row/*:name/text()
我是 XQuery 的新手。null
请指导我解决下面的问题,如果下面的表达式没有给出任何值,我想将值作为字符串返回。
目前,输出不显示“名称”字段本身。我想有一个名字null
。例如-
if (IsNull(expression),null,expression)
$output.dataAccessResponse[1]/*:row/*:name/text()
您可以使用该fn:exists()
功能来测试是否有text()
节点。
exists($output.dataAccessResponse[1]/:row/:name/text())
您还可以使用该fn:boolean()
函数来测试节点的有效布尔值。
boolean($output.dataAccessResponse[1]/:row/:name/text())
如果您想测试是否存在重要值,即除空格之外的其他值,您可以fn:normalize-space()
在谓词中确保仅text()
选择具有有意义文本的节点,然后进行测试fn:exists()
。
exists($output.dataAccessResponse[1]/:row/:name/text()[normalize-space()])
XQuery 没有null
,因此如果您询问要返回什么来指示null
,那么您可能希望返回一个空序列()
而不是null
.
因此,您可以执行以下操作:
let $name := $output.dataAccessResponse[1]/:row/:name/text()
return
if (fn:exists($name))
then $name
else ()
但此时,它实际上与尝试text()
使用该 XPath 选择 相同,它将返回text()
节点或空序列:
$output.dataAccessResponse[1]/:row/:name/text()