Вы можете использовать функцию 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()
person
Mads Hansen
schedule
05.06.2020