📅  最后修改于: 2020-11-09 05:41:28             🧑  作者: Mango
本章阐述了如何在本地开发环境中设置XQuery库。
我们正在使用广泛使用的开源独立XQuery处理器Saxon Home Edition(Saxon-HE)。该处理器支持XSLT 2.0,XQuery 3.0和XPath 3.0,并针对性能进行了高度优化。可以在没有任何XML数据库的情况下使用Saxon XQuery处理器。在示例中,我们将使用一个简单的XML文档作为数据库。
为了使用Saxon XQuery处理器,您应该在应用程序的类路径中包含saxon9he.jar,saxon9-test.jar,saxon9-unpack,saxon9-xqj.jar。这些jar文件在下载文件SaxonHE9-6-0-1J.zip下载可用SaxonHE9-6-0-1J.zip 。
我们将使用基于Java的Saxon XQuery处理器来对books.xqy进行测试,books.xqy是一个针对我们的示例XML文档(即books.xml)包含XQuery表达式的文件。
在此示例中,我们将看到如何编写和处理查询以获取价格大于30的书籍的标题元素。
Learn Java in 24 Hours
Robert
2005
30.00
Learn .Net in 24 hours
Peter
2011
40.50
Learn XQuery in 24 hours
Robert
Peter
2013
50.00
Learn XPath in 24 hours
Jay Ban
2010
16.50
for $x in doc("books.xml")/books/book
where $x/price>30
return $x/title
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));
}
}
}
步骤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
E:\java\java XQueryTester
您将获得以下结果-
Learn .Net in 24 hours
Learn XQuery in 24 hours
books.xml代表示例数据。
books.xqy表示要在books.xml上执行的XQuery表达式。我们将在下一章中详细了解该表达。
XQueryTester是一个基于Java的XQuery执行程序,它读取books.xqy并将其传递给XQuery表达式处理器,然后执行该表达式。然后打印结果。