XQuery - Configurazione dell'ambiente
Questo capitolo elabora come impostare la libreria XQuery in un ambiente di sviluppo locale.
Stiamo utilizzando un processore XQuery autonomo open source Saxon Home Edition (Saxon-HE) che è ampiamente utilizzato. Questo processore supporta XSLT 2.0, XQuery 3.0 e XPath 3.0 ed è altamente ottimizzato per le prestazioni. Il processore Saxon XQuery può essere utilizzato senza avere alcun database XML. Useremo un semplice documento XML come nostro database nei nostri esempi.
Per utilizzare il processore Saxon XQuery, dovresti avere saxon9he.jar, saxon9-test.jar, saxon9-unpack, saxon9-xqj.jar nel classpath dell'applicazione. Questi file jar sono disponibili nel file di downloadSaxonHE9-6-0-1J.zipScarica SaxonHE9-6-0-1J.zip .
Esempio
Useremo il processore Saxon XQuery basato su Java per testare books.xqy, un file contenente l'espressione XQuery rispetto al nostro documento XML di esempio, ovvero books.xml.
In questo esempio, vedremo come scrivere ed elaborare una query per ottenere gli elementi del titolo dei libri il cui prezzo è maggiore di 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));
}
}
}
Passaggi per eseguire XQuery su XML
Step 1 - Copia XQueryTester.java in qualsiasi posizione, ad esempio, E: > java
Step 2 - Copia books.xml nella stessa posizione, E: > java
Step 3 - Copia books.xqy nella stessa posizione, E: > java
Step 4- Compila XQueryTester.java usando la console. Assicurati di avere JDK 1.5 o successivo installato sulla tua macchina e che i classpath siano configurati. Per i dettagli su come utilizzare JAVA, vedere il nostro Tutorial su JAVA
E:\java\javac XQueryTester.java
Step 5 - Esegui XQueryTester
E:\java\java XQueryTester
Produzione
Otterrai il seguente risultato:
<title lang="en">Learn .Net in 24 hours</title>
<title lang="en">Learn XQuery in 24 hours</title>
Comprendere l'esempio
books.xml rappresenta i dati di esempio.
books.xqy rappresenta l'espressione XQuery che deve essere eseguita su books.xml. Capiremo l'espressione in dettaglio nel prossimo capitolo.
XQueryTester, un programma esecutore XQuery basato su Java, legge books.xqy, lo passa al processore di espressioni XQuery ed esegue l'espressione. Quindi il risultato viene stampato.