我是 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()