我是XQuery的新手。如果下面的表达式没有给出任何值,请指导我解决以下问题,我想以字符串形式返回null
值。
当前,输出未显示“名称”字段本身。我想用null
命名。例如-
if (IsNull(expression),null,expression)
$output.dataAccessResponse[1]/*:row/*:name/text()
答案 0 :(得分:0)
您可以使用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
,那么您将想返回一个空序列()
而不是{{1} }。
因此,您可以执行以下操作:
null
但是到那时,它实际上与尝试使用该XPath选择let $name := $output.dataAccessResponse[1]/:row/:name/text()
return
if (fn:exists($name))
then $name
else ()
相同,它将返回text()
节点或空序列:
text()