Учебники

XQuery – настройка среды

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