XQuery - Configuração de Ambiente

Este capítulo elabora como configurar a biblioteca XQuery em um ambiente de desenvolvimento local.

Estamos usando um processador XQuery autônomo de código aberto Saxon Home Edition (Saxon-HE), que é amplamente utilizado. Este processador suporta XSLT 2.0, XQuery 3.0 e XPath 3.0 e é altamente otimizado para desempenho. O processador Saxon XQuery pode ser usado sem nenhum banco de dados XML. Usaremos um documento XML simples como nosso banco de dados em nossos exemplos.

Para usar o processador Saxon XQuery, você deve ter saxon9he.jar, saxon9-test.jar, saxon9-unpack, saxon9-xqj.jar no classpath de seu aplicativo. Esses arquivos jar estão disponíveis no arquivo de downloadSaxonHE9-6-0-1J.zipBaixe SaxonHE9-6-0-1J.zip .

Exemplo

Usaremos o processador Saxon XQuery baseado em Java para testar books.xqy, um arquivo que contém a expressão XQuery em nosso documento XML de amostra, ou seja, books.xml.

Neste exemplo, veremos como escrever e processar uma consulta para obter os elementos do título dos livros cujo preço é maior que 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));
      }
   }	
}

Etapas para executar XQuery em XML

  • Step 1 - Copie XQueryTester.java para qualquer local, digamos, E: > java

  • Step 2 - Copie books.xml para o mesmo local, E: > java

  • Step 3 - Copie books.xqy para o mesmo local, E: > java

  • Step 4- Compilar XQueryTester.java usando o console. Certifique-se de ter o JDK 1.5 ou posterior instalado em sua máquina e os classpaths configurados. Para obter detalhes sobre como usar JAVA, consulte nosso Tutorial JAVA

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

E:\java\java XQueryTester

Resultado

Você obterá o seguinte resultado -

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

Exemplo de compreensão

  • books.xml representa os dados de amostra.

  • books.xqy representa a expressão XQuery que deve ser executada em books.xml. Vamos entender a expressão em detalhes no próximo capítulo.

  • XQueryTester, um programa executor de XQuery baseado em Java, lê books.xqy, passa-o para o processador de expressão XQuery e executa a expressão. Em seguida, o resultado é impresso.