Hi,
I'm getting the following:
Error: Stopped at line 1, column 73:
[XPST0003] Expecting 'where', 'order' or 'return' expression.
Query: for $doc in db:open('dk') let $dates := $doc//DATO for $date
in $dates try{ return <gooddate>{xs:date($date)}</gooddate> } catch
*{ return <baddate docid="{$doc/*/@ID}">{$date}</baddate>}
I wanted to basically to return all DATO elements with document ids
that were not valid xs dates, and figured a try catch with returns in
it were the best option. Is that not allowed or have I made some basic
error?
If it's not allowed how would you handle it? Note it is not really
realistic to do something like catch these errors in validation since
they've already been past the validation process, first I'd have to do
a lot of work to write a schema that handled the document structure
since there are a lot of mixed content possibilities (or add new
validation language etc.), second I'd have to have it in my validation
pipeline and the several hundred thousand large documents would have
to be run through the pipeline again just to find a few thousand
malformed dates that anyway are currently not used for anything
important (but of course if we make them valid date then they can
start being used for stuff)
at any rate handling it with XQuery seems the best solution.
Thanks,
Bryan Rasmussen