Subject:How to resolve XPTY0004 error Author:Kam Chan Date:08 Jul 2009 11:20 AM Originally Posted: 08 Jul 2009 11:19 AM
Hi,
When running my xQuery, I am getting the following error, but it doesn't tell me which file or line this refers to.
[DataDirect][XQuery][err:XPTY0004]A sequence with more than one item does not match the type element(Form, xs:anyType)? according to the Sequence Type Matching rules.
I took a guess on where this might be happening on, and commented out large portions of code. One block of code, if I removed, the xQuery runs. But if I add back just one single line (which had been used many times before and in many other functions), the problem comes back.
I don't have anywhere in the xQuery declaring the type "element(Form, xs:anyType)?".
Subject:How to resolve XPTY0004 error Author:(Deleted User) Date:09 Jul 2009 04:07 AM
Hi Kam,
the element(Form) sequence type is generated also when writing an XPath expression containing /Form/...
Can you find such expression in your code?
Subject:How to resolve XPTY0004 error Author:Kam Chan Date:09 Jul 2009 09:26 AM
Hi Alberto,
No, not really. There is no node or element in the source XML data with name "Form". So there is no xPath or any code looks for /Form/ or something like that. There is an attribute (@type) that might have the value of "form" (lowercase).
The only thing is the output XML does get created with <Form></Form> nodes. These are just created by the xQuery code, but not searched for. There is no xPath code that looks for /Form/ from the result.
The only place that I "look into" the resulting XML is follows:
let $resultDetails := laforms:CA04130807-recursive($system, $form, $allRelevantDetails, $requestId, 0)
let $resultDetailsCount := count($resultDetails)
In the first line, the function returns 0 or more <Form></From> elements (with contents inside). And the count() function just counts how many of these <Form></Form> elements are there.