如何在Java上的撒克逊语中“按…排序”

时间:2019-02-20 19:24:20

标签: saxon

这是this question的后续内容。

我打电话:

XQueryCompiler compiler = processor.newXQueryCompiler();
// 21 of the following
xPath.declareNamespace(prefix, uri);
xPath.compile("for $n in '/def:System/def:Securities[def:AssetType != 50]' order by $n/'def:RiskLevel' return $n");
XQueryEvaluator selector = exe.load();
selector.setContextItem(xmlDocument);
// exception thrown on this:
selector.evaluate();

我得到: net.sf.saxon.s9api.SaxonApiException:'/'的第一个操作数的必需项类型为node();提供的值的项目类型为xs:string

我猜想'/ def:System / def:Securities [def:AssetType!= 50]'必须是节点-我该怎么做?而且,将其设为一个节点然后将其简化为一个节点,而不是返回与查询匹配的所有节点吗?

此查询可能很复杂,例如“ node / node [@attr ='5] / node / not [node ='dave'] / node / @ atr”

更新:查询“ / def:System / def:Securities [def:AssetType!= 50]中的$ n”,顺序为$ n /'def:RiskLevel,def:SecurityDesc 'return $ n“我也遇到同样的异常。

1 个答案:

答案 0 :(得分:0)

查询中的那些单引号是虚假的。您将$ n绑定到字符串'/def:System/def:Securities[def:AssetType != 50]',错误是说$n/xxx是字符串时不能使用$n