[xquery-talk] How to handle empty sequence?
Michael Kay
mhk at mhk.me.uk
Tue Jan 18 09:32:22 PST 2005
> let $version := ($release3/version)
> return
> <td>
> <CENTER>
> {
> if (string-length(string($version/node())) =
> 0) then "NA"
> else $version/node()
> }
> </CENTER>
> </td>
> This query works fine if all applications have a version in each
> environment. The problem is when I have an application that
> does not have
> any versions released to a particular env. .When this occurs, the
> $sorted_releases sequence will be empty, so I never get to
> "for $release3"
> return to generate the necessary table element (which would be blank).
Yes, you can't do $version/node() if $version is a string. But why are you
doing $version/node() anyway? If the input is <version>13<!--I
think--></version>, this will fail because the version element has two child
nodes, and string() must take a singleton as its argument. Better to take
the string value of the element node itself.
I would do
let $version = string(($release3/version, "NA")[1])
return
<td>
<CENTER>
{
$version
}
</CENTER>
</td>
More information about the talk
mailing list