#xquery
#xquery
Вопрос:
Я очень новичок в этом.
У меня есть запрос и XML-файл.
Я могу написать запрос по этому конкретному файлу
for $x in doc("file:///C:/Users/Foo/IdeaProjects/XQuery/src/books.xml")/bookstore/book
where $x/price>30
order by $x/title
return $x/title
У меня есть базовый XML-файл с книгами в нем, он хорошо работает в intellij.
но если бы я хотел выполнить этот запрос к некоторому файлу, определенному в командной строке, то как мне это сделать?
командная строка для выполнения приведенного выше (столько же, сколько для ссылки других людей)
java -cp C:UsersFoo.IdeaIC2019.2configpluginsxquery-intellij-pluginlibSaxon-HE-9.9.1-7.jar net.sf.saxon.Query -t -q:"C:UsersFooIdeaProjectsXQuerysrcw3schools.com.xqy"
и это тоже хорошо работает.
документация saxon
https://www.saxonica.com/html/documentation/using-xquery/commandline.html
подразумевает, что я могу указать входной файл, используя «-d» и «Узел документа документа становится доступным для запроса в качестве элемента контекста»
но на самом деле это не имеет никакого смысла для моих 1-дневных навыков XQuery.
как мне указать, что документ отправляется из командной строки в запросе? что такое элемент контекста? и как мне на него ссылаться?
(Я могу немного поработать с XSLT 1.0, поэтому я понимаю понятие контекста).
Ответ №1:
Я думаю, что опция названа -s
(for source
), чтобы вы могли использовать -s:books.xml
, и внутри вашего основного выражения XQuery любой путь вычисляется с этим документом в качестве элемента контекста, поэтому вы можете просто использовать, например
for $x in /bookstore/book
where $x/price>30
order by $x/title
return $x/title
Ответ №2:
и ответ заключается в том, чтобы удалить функцию doc ()
for $x in bookstore/book
т. е. то же понятие, что и xslt.