XQuery - Configuración del entorno

Este capítulo explica cómo configurar la biblioteca XQuery en un entorno de desarrollo local.

Estamos utilizando un procesador XQuery independiente de código abierto, Saxon Home Edition (Saxon-HE), que se utiliza ampliamente. Este procesador es compatible con XSLT 2.0, XQuery 3.0 y XPath 3.0 y está altamente optimizado para el rendimiento. El procesador Saxon XQuery se puede utilizar sin tener ninguna base de datos XML. Usaremos un documento XML simple como nuestra base de datos en nuestros ejemplos.

Para utilizar el procesador Saxon XQuery, debe tener saxon9he.jar, saxon9-test.jar, saxon9-unpack, saxon9-xqj.jar en el classpath de su aplicación. Estos archivos jar están disponibles en el archivo de descargaSaxonHE9-6-0-1J.zipDescargue SaxonHE9-6-0-1J.zip .

Ejemplo

Usaremos el procesador Saxon XQuery basado en Java para probar books.xqy, un archivo que contiene la expresión XQuery con nuestro documento XML de muestra, es decir, books.xml.

En este ejemplo, veremos cómo escribir y procesar una consulta para obtener los elementos del título de los libros cuyo precio es superior a 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));
      }
   }	
}

Pasos para ejecutar XQuery contra XML

  • Step 1 - Copie XQueryTester.java en cualquier ubicación, por ejemplo, E: > java

  • Step 2 - Copie books.xml en la misma ubicación, E: > java

  • Step 3 - Copie books.xqy en la misma ubicación, E: > java

  • Step 4- Compile XQueryTester.java usando la consola. Asegúrese de tener JDK 1.5 o posterior instalado en su máquina y que las rutas de clases estén configuradas. Para obtener detalles sobre cómo usar JAVA, consulte nuestro Tutorial de JAVA

E:\java\javac XQueryTester.java
  • Step 5 - Ejecutar XQueryTester

E:\java\java XQueryTester

Salida

Obtendrá el siguiente resultado:

<title lang="en">Learn .Net in 24 hours</title>
<title lang="en">Learn XQuery in 24 hours</title>

Ejemplo de comprensión

  • books.xml representa los datos de muestra.

  • books.xqy representa la expresión XQuery que se ejecutará en books.xml. Entenderemos la expresión en detalle en el próximo capítulo.

  • XQueryTester, un programa ejecutor de XQuery basado en Java, lee books.xqy, lo pasa al procesador de expresiones XQuery y ejecuta la expresión. Luego se imprime el resultado.