Я хочу выполнить файл xQuery в файле XML; При компиляции запроса у меня возникает следующая ошибка. Я не понимаю эту ошибку "контекстного элемента".
КОД (пример)
String xmlFileName = "D:/fichierContenu.XML";
FileInputStream XmlStream = new FileInputStream(xmlFileName);
DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
DocumentBuilder builder = factory.newDocumentBuilder();
FileInputStream fis = new FileInputStream(xmlFileName);
InputSource is = new InputSource(fis);
Document doc = builder.parse(is);
Element element = doc.getDocumentElement();
InputStream queryStream = queryStream = new FileInputStream("D:/TestsAuto.xq");
Processor proc = new Processor(false);
XQueryCompiler comp = proc.newXQueryCompiler();
XQueryExecutable exp = comp.compile(queryStream);
XQuery
declare function local:checkRefTest() as xs:string {
(:text and explication here. :)
let $REFTEST := /dmodule/descendant::REFTEST ***(=> line 363 HERE)***
return
let $refTestKO :=
for $item in $REFTEST
return
if(fn:string-length($item/@RefTest)= 13) then
let $RefTest := fn:substring($item/@RefTest, 1, 6)
return
if ($RefTest = " ") then
if(fn:exists($item/@refval) and fn:exists($item/@refval2)) then
()
else
()
else
()
else
$item
return
if(fn:empty($refTestKO)) then
"OK"
else
fn:concat("NOK : test here ", "'",fn:string-join($refTestKO/@RefTest, "', '"),"'")
};
ОШИБКА
Ошибка в строке 363 модуля без идентификатора системы: XPDY0002: начальный символ «/» не может выбрать корневой узел дерева, содержащего элемент контекста: элемент контекста не определен Исключение в потоке «main» net.sf .saxon.s9api.SaxonApiException: «/» в начале не может выбрать корневой узел дерева, содержащего элемент контекста: элемент контекста не определен в net.sf.saxon.s9api.XQueryCompiler.compile(XQueryCompiler.java:504) в utils .xquery.essai.main(essai.java:92) Причина: net.sf.saxon.trans.XPathException: начальный '/' не может выбрать корневой узел дерева, содержащего элемент контекста: элемент контекста не определен в сети .sf.saxon.expr.SingleNodeExpression.typeCheck(SingleNodeExpression.java:29) в net.sf.saxon.expr.parser.ExpressionVisitor.typeCheck(ExpressionVisitor.java:206)
Не могли бы вы объяснить или показать мне фрагмент кода, который позволил бы мне решить эту проблему?
В чем моя проблема?