В этой главе рассказывается, как настроить библиотеку 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 и выполняет выражение. Затем результат печатается.