I am passing a parameter ('articles-counter') from a form to a function in an eXist-db app.
If there is nothing passed (the field is not filled in), this works:
let $xmldb-food :=
(
let $articles-counter :=
(
let $counter-passed := request:get-parameter('articles-counter', '')
return
if ($counter-passed) then
$counter-passed
else ()
)
for $uri at $count in (1 to xs:integer($articles-counter))
let $param := request:get-parameter(concat('article-uri-', $count), '')
return
if ($param ne '') then
string-join($param, ',')
else ()
)
The next example does not. It throws xs:integer is expected (in the for range) but got ''. What is going on here? I would think it is almost the same:
let $xmldb-food :=
(
let $articles-counter := request:get-parameter('articles-counter', '')
for $uri at $count in (1 to xs:integer($articles-counter))
let $param := request:get-parameter(concat('article-uri-', $count), '')
return
if ($param ne '') then
string-join($param, ',')
else ()
)
What is the difference between '' and () (empty sequence)?