Hello there,
I found the problem! My code added a trailing space to the values of the
variables when binding.
After tokenizing in the XQuery, this creates a zero length string which
when cast to xs:integer then becomes an xs:double according to the error
message.
Is this intended behaviour?
Shaun
On 31 Oct 2017 06:20, "Shaun Flynn" <scfy12(a)googlemail.com> wrote:
> Hello there,
>
> I found the problem! My code added a trailing space to the values of the
> variables when binding.
>
> After tokenizing in the XQuery, this creates a zero length string which
> when cast to xs:integer then becomes an xs:double according to the error
> message.
>
> Is this intended behaviour?
>
> Shaun
>
> On 30 Oct 2017 17:39, "Shaun Flynn" <scfy12(a)googlemail.com> wrote:
>
>> Hello there,
>>
>> I created a simple example using the BaseX Java API, and that worked
>> fine, also using my code to create the query and submit it to a
>> ClientSession worked ok too :(
>>
>> This was the query I ran:
>>
>> declare variable $items external := "123 NIL";
>> declare variable $tokenizedItems:= tokenize($items," ");
>>
>> for $item in $tokenizedItems
>> return
>> if($item = "NIL") then ("Nil") else (xs:integer($item))
>>
>> Unable to reproduce the earlier result from today using my code as well :(
>>
>> So I can understand the error better: "[FORG0001] Cannot cast to
>> xs:double: ."
>>
>> The full stop after xs:double , does that relate to a decimal point or
>> the current item (xquery .)
>>
>> Shaun
>>
>> On 30 October 2017 at 10:31, Christian Grün <christian.gruen(a)gmail.com>
>> wrote:
>>
>>> Thanks. Some few lines of Java Code might already be sufficient
>>> (provided that the problem can be reproduced with the XQuery snippet
>>> that you sent in your last mail).
>>>
>>> On Mon, Oct 30, 2017 at 11:24 AM, Shaun Flynn <scfy12(a)googlemail.com>
>>> wrote:
>>> > Hello there,
>>> >
>>> > I will put something together for you later on today in a .zip file.
>>> >
>>> > Shaun
>>> >
>>> > On 30 October 2017 at 10:22, Christian Grün <christian.gruen(a)gmail.com
>>> >
>>> > wrote:
>>> >>
>>> >> > However, when I bind variables externally in Java, still getting the
>>> >> > same
>>> >> > problem, and I definitely not putting quotes around them there.
>>> >>
>>> >> Do you have an example that might help me to reproduce it?
>>> >>
>>> >>
>>> >> > $depotConstraint: PM
>>> >> > $resourceConstraint: 143/6
>>> >> > $lowerDiagConstraint: 251
>>> >> > $upperDiagConstraint: 258
>>> >> > Oct 30, 2017 9:05:33 AM units.forms.UnitDiagramsController
>>> >> > fetchSelectedDiagrams
>>> >> > SEVERE: null
>>> >> > org.basex.core.BaseXException: Stopped at ., 29/61:
>>> >> > [FORG0001] Cannot cast to xs:double: .
>>> >> >
>>> >> >
>>> >> >
>>> >> > On 30 October 2017 at 09:57, Christian Grün <
>>> christian.gruen(a)gmail.com>
>>> >> > wrote:
>>> >> >>
>>> >> >> HiShaun,
>>> >> >>
>>> >> >> > I do not understand why that should be as there is clearly no
>>> mention
>>> >> >> > of
>>> >> >> > xs:double in this query!
>>> >> >>
>>> >> >> I agree that the error message is misleading. You already get it
>>> when
>>> >> >> invoking the following expression:
>>> >> >>
>>> >> >> 'a' cast as xs:integer
>>> >> >>
>>> >> >> I need to check the code, but I assume that an additional double
>>> >> >> conversion check takes place in the background in order to ensure
>>> that
>>> >> >> the value can actually be converted to a non-fractional number.
>>> >> >>
>>> >> >> For more information on your query, it would be great if you could
>>> >> >> reduce it to a self-contained example that runs out of the box (I
>>> >> >> tried to invoke it, but your code seems to rely on an opened
>>> >> >> database).
>>> >> >>
>>> >> >> Best,
>>> >> >> Christian
>>> >> >
>>> >> >
>>> >
>>> >
>>>
>>
>>