I am new to saxon using it to process existing xqueries. I can execute simple xquery with primitive types(simple types) from java class as below:
Xquery:
declare function xf:addNumberss($int1 as xs:int,
$int2 as xs:int)
as xs:int {
<value>{data($int1)+data($int2)}</value>
};
Java:
final Sequence[] arglist = new Sequence[2];
arglist[0] = new Int64Value(10);
arglist[1] = new Int64Value(10);
arglist[0] = new Int64Value(request.getNo1());
arglist[1] = new Int64Value(request.getNo2());
Sequence result = null;
try {
result = fn1.call(arglist, controller);
where I am getting the expected response. But I am stuck how to pass a complex element as input to Xquery
Ex: Xquery
declare function xf:addNumbersByElements($addNumbers1 as element(ns0:addNumbers))
as element(ns0:addNumbersResponse) {
<ns0:addNumbersResponse>
<ns0:response>
<ns0:result>{ data($addNumbers1/ns0:request/ns0:no1) + data($addNumbers1/ns0:request/ns0:no2) }</ns0:result>
</ns0:response>
</ns0:addNumbersResponse>
Java:
final Sequence[] arglist = new Sequence[1];
arglist[0] = (Sequence)addNumType;
Unable to convert AdNumType complex type to sequence Exception:java.lang.ClassCastException: com.xq.AddNumbersType incompatible with net.sf.saxon.om.Sequence
Could anyone please help how to convert complex type to xquery input in Saxon. Also please suggest any tutorial links available apart from API reference guide.
Thanks