XQuery開發環境安裝

本章將詳細說明了如何在本地開發環境中設置XQuery庫開發環境。

我們將使用一種廣泛使用的開源獨立XQuery處理器Saxon Home Edition(Saxon-HE)。 該處理器支持XSLT 2.0,XQuery 3.0和XPath 3.0,並且針對性能進行了高度優化。 Saxon XQuery處理器可以在沒有任何XML數據庫的情況下使用。 在之後的一系列示例中,我們將使用一個簡單的XML文檔作爲數據庫。

要使用Saxon XQuery處理器,應該在應用程序的類路徑中放置:saxon9he.jarsaxon9-test.jarsaxon9-unpacksaxon9-xqj.jar。 這些jar文件可通過下載文件包 - SaxonHE9-6-0-1J.zip 獲得。把下載的 SaxonHE9-6-0-1J.zip 解壓後放到目錄:D:\worksp\xquery\libs 中。

示例

在示例中,將使用基於Java的Saxon XQuery處理器來測試文件:books.xqy,這是一個包含示例XML文檔的XQuery表達式的文件,即 - books.xml

在這個例子中,將演示如何編寫和處理查詢以獲取價格大於30的書籍<title>元素內容。

文件:D:\worksp\xquery\books.xml 的內容如下 -

<?xml version="1.0" encoding="UTF-8"?>
<books>

   <book category="JAVA">
      <title lang="en">15天搞定Java</title>
      <author>Maxsu</author>
      <year>2015</year>
      <price>30.00</price>
   </book>

   <book category="DOTNET">
      <title lang="en">15天搞定.Net</title>
      <author>Susen</author>
      <year>2018</year>
      <price>40.50</price>
   </book>

   <book category="XML">
      <title lang="en">3天搞定XQuery</title>
      <author>Yizhi</author>
      <author>Maxsu</author> 
      <year>2016</year>
      <price>50.00</price>
   </book>

   <book category="XML">
      <title lang="en">24小時搞定XPath</title>
      <author>Jazz Bee</author>
      <year>2019</year>
      <price>16.50</price>
   </book>

</books>

文件:D:\worksp\xquery\books.xqy 的內容如下所示 -

for $x in doc("books.xml")/books/book
where $x/price>30
return $x/title

文件:D:\worksp\xquery\XQueryTester.java 的內容如下所示 -

//package com.yiibai.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複製到一個工作目錄位置,例如:D:\worksp\xquery
第2步 - 將books.xml複製到同一目錄位置,例如:D:\worksp\xquery
第3步 - 將books.xqy複製到同一目錄位置,例如:D:\worksp\xquery
第4步 - 在命令行下編譯XQueryTester.java。 確保在計算機上安裝了JDK 1.5或更高版本,並且已配置類路徑。有關如何使用JAVA的詳細信息,請參閱JAVA教程。
第5步 - 執行編譯和執行 -

D:\worksp\xquery>javac -Djava.ext.dirs=D:\worksp\xquery\libs XQueryTester.java

D:\worksp\xquery>java -Djava.ext.dirs=D:\worksp\xquery\libs XQueryTester

驗證輸出結果 -

在執行編譯和執行上面示例代碼後,得到以下結果 -

XQuery開發環境安裝

理解示例代碼實現

  • books.xml表示示例數據文件。
  • books.xqy表示要在books.xml上執行的XQuery表達式。將在下一章詳細理解這個表達方式。
  • XQueryTester.java是一個基於Java的XQuery執行程序,它讀取books.xqy,將其傳遞給XQuery表達式處理器,然後執行表達式。然後打印結果。