【发布时间】:2019-02-13 03:53:35
【问题描述】:
我是 saxon 的新手,使用它来处理现有的 xqueries。我可以使用 java 类中的原始类型(简单类型)执行简单的 xquery,如下所示:
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);
我得到了预期的响应。但我被困在如何将复杂元素作为输入传递给 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;
无法将 AdNumType 复杂类型转换为序列 异常:java.lang.ClassCastException:com.xq.AddNumbersType 与 net.sf.saxon.om.Sequence 不兼容
任何人都可以帮助如何在撒克逊语中将复杂类型转换为 xquery 输入。此外,请建议除 API 参考指南之外的任何可用教程链接。
谢谢
【问题讨论】:
-
感谢您的回复。我会检查上面的链接