Это продолжение этого вопроса .
Я звоню:
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 "Я получаю то же исключение.