Как мне «за… упорядочить» на саксонском на Java - PullRequest
0 голосов
/ 20 февраля 2019

Это продолжение этого вопроса .

Я звоню:

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]' должен быть узлом - как мне это сделать?А также, сделает ли это узел узлом, затем уменьшит его до одного узла, вместо того, чтобы возвращать все узлы, которые соответствуют запросу?

И этот запрос может быть сложным как "узел / узел [@attr = '5] / узел/ not [node = 'dave'] / node / @ atr "

Обновление: С запросом" для $ n в / def: System / def: Securities [def: AssetType "! = 50] упорядочить по $ n / 'def: RiskLevel, def: SecurityDesc' return $ n "Я получаю то же исключение.

1 Ответ

0 голосов
/ 20 февраля 2019

Эти одинарные кавычки в запросе являются ложными.Вы привязываете $ n к строке '/def:System/def:Securities[def:AssetType != 50]', и ошибка говорит о том, что вы не можете использовать $n/xxx, когда $n - строка.

...