Hi folks,
This may be a simple xquery syntax issue, but I've cut my teeth with xquery
in MarkLogic and thought I'd ask the question here.
There are times that I need to build a node in a function using conditional
logic. For example, given the following function:
declare function aas:build-value-element($qname as xs:string,
$value as xs:string) as node()
{
if ($value ne "") then element value { attribute name {$qname}, $value}
else ()
};
then if a blank value is passed in, e.g.
aas:build-value-element("surname ", "")
then an error is returned:
[1.0-ml] XDMP-AS: (err:XPTY0004)
aas:build-value-element("author-surname", "") -- Invalid coercion: () as
node()
So the question is, what is the best way to return an empty node? What I
have been doing to get around this is to return a blank text node, e.g.:
declare function aas:build-value-element($qname as xs:string,
$value as xs:string) as node()
{
if ($value ne "") then element value { attribute name {$qname}, $value}
else text {""}
};
but the result is that the return node has the extra node in it, albeit a
blank text node.
Are there any best practices for handling this? Is this really an issue -
in all reality does the blank text node get stripped off when storing the
results in an XML document?
Thanks for the help!
Tim Meagher - AAOM Consulting
_______________________________________________
General mailing list
[email protected]
http://xqzone.com/mailman/listinfo/general