В этой главе рассказывается, как настроить библиотеку XQuery в локальной среде разработки.
Мы используем автономный процессор XQuery с открытым исходным кодом Saxon Home Edition (Saxon-HE), который широко используется. Этот процессор поддерживает XSLT 2.0, XQuery 3.0 и XPath 3.0 и высоко оптимизирован для производительности. Процессор Saxon XQuery можно использовать без использования базы данных XML. Мы будем использовать простой XML-документ в качестве нашей базы данных в наших примерах.
Чтобы использовать процессор Saxon XQuery, вы должны иметь saxon9he.jar, saxon9-test.jar, saxon9-unpack, saxon9-xqj.jar в пути к классам вашего приложения. Эти файлы JAR доступны в файле загрузки SaxonHE9-6-0-1J.zip Скачать SaxonHE9-6-0-1J.zip .
пример
Мы будем использовать процессор Saxon XQuery на основе Java для тестирования файла books.xqy, содержащего выражение XQuery, в нашем примере XML-документа, т.е. books.xml.
В этом примере мы увидим, как написать и обработать запрос, чтобы получить титульные элементы книг, цена которых превышает 30.
books.xml
<?xml version="1.0" encoding="UTF-8"?> <books> <book category="JAVA"> <title lang="en">Learn Java in 24 Hours</title> <author>Robert</author> <year>2005</year> <price>30.00</price> </book> <book category="DOTNET"> <title lang="en">Learn .Net in 24 hours</title> <author>Peter</author> <year>2011</year> <price>40.50</price> </book> <book category="XML"> <title lang="en">Learn XQuery in 24 hours</title> <author>Robert</author> <author>Peter</author> <year>2013</year> <price>50.00</price> </book> <book category="XML"> <title lang="en">Learn XPath in 24 hours</title> <author>Jay Ban</author> <year>2010</year> <price>16.50</price> </book> </books>
books.xqy
for $x in doc("books.xml")/books/book where $x/price>30 return $x/title
XQueryTester.java
package com.tutorialspoint.xquery; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import javax.xml.xquery.XQConnection; import javax.xml.xquery.XQDataSource; import javax.xml.xquery.XQException; import javax.xml.xquery.XQPreparedExpression; import javax.xml.xquery.XQResultSequence; import com.saxonica.xqj.SaxonXQDataSource; public class XQueryTester { public static void main(String[] args){ try { execute(); } catch (FileNotFoundException e) { e.printStackTrace(); } catch (XQException e) { e.printStackTrace(); } } private static void execute() throws FileNotFoundException, XQException{ InputStream inputStream = new FileInputStream(new File("books.xqy")); XQDataSource ds = new SaxonXQDataSource(); XQConnection conn = ds.getConnection(); XQPreparedExpression exp = conn.prepareExpression(inputStream); XQResultSequence result = exp.executeQuery(); while (result.next()) { System.out.println(result.getItemAsString(null)); } } }
Шаги для выполнения XQuery против XML
-
Шаг 1 — Скопируйте XQueryTester.java в любое место, скажем, E: > java
-
Шаг 2 — Скопируйте books.xml в то же место, E: > Java
-
Шаг 3 — Скопируйте books.xqy в то же место, E: > Java
-
Шаг 4 — Скомпилируйте XQueryTester.java с помощью консоли. Убедитесь, что на вашем компьютере установлен JDK 1.5 или более поздней версии и настроены пути к классам. Подробнее о том, как использовать JAVA, смотрите наш учебник по JAVA.
Шаг 1 — Скопируйте XQueryTester.java в любое место, скажем, E: > java
Шаг 2 — Скопируйте books.xml в то же место, E: > Java
Шаг 3 — Скопируйте books.xqy в то же место, E: > Java
Шаг 4 — Скомпилируйте XQueryTester.java с помощью консоли. Убедитесь, что на вашем компьютере установлен JDK 1.5 или более поздней версии и настроены пути к классам. Подробнее о том, как использовать JAVA, смотрите наш учебник по JAVA.
E:\java\javac XQueryTester.java
-
Шаг 5 — Выполнить XQueryTester
Шаг 5 — Выполнить XQueryTester
E:\java\java XQueryTester
Выход
Вы получите следующий результат —
books.xml представляет пример данных.
books.xqy представляет выражение XQuery, которое должно быть выполнено в books.xml. Мы разберем это выражение в следующей главе.
XQueryTester, основанная на Java программа-исполнитель XQuery, считывает books.xqy, передает ее процессору выражений XQuery и выполняет выражение. Затем результат печатается.