📜  XQuery-环境设置

📅  最后修改于: 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的书籍的标题元素。

books.xml



   
   
      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
   
   

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));
      }
   }    
}

针对XML执行XQuery的步骤

  • 步骤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表达式处理器,然后执行该表达式。然后打印结果。