XQuery-環境設定
この章では、ローカル開発環境でXQueryライブラリを設定する方法について詳しく説明します。
広く使用されているオープンソースのスタンドアロンXQueryプロセッサSaxonHome Edition(Saxon-HE)を使用しています。このプロセッサは、XSLT 2.0、XQuery 3.0、およびXPath 3.0をサポートし、パフォーマンスが高度に最適化されています。Saxon XQueryプロセッサは、XMLデータベースがなくても使用できます。例では、データベースとして単純なXMLドキュメントを使用します。
Saxon XQueryプロセッサを使用するには、アプリケーションのクラスパスにsaxon9he.jar、saxon9-test.jar、saxon9-unpack、saxon9-xqj.jarが含まれている必要があります。これらのjarファイルはダウンロードファイルで入手できます。SaxonHE9-6-0-1J.zipSaxonHE9-6-0-1J.zipをダウンロードします。
例
JavaベースのSaxonXQueryプロセッサを使用して、books.xqyをテストします。これは、サンプルXMLドキュメント(books.xml)に対してXQuery式を含むファイルです。
この例では、クエリを作成して処理し、価格が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));
}
}
}
XMLに対してXQueryを実行する手順
Step 1 −XQueryTester.javaを任意の場所にコピーします。 E: >> java
Step 2 −books.xmlを同じ場所にコピーします。 E: >> java
Step 3 −books.xqyを同じ場所にコピーします。 E: >> java
Step 4−コンソールを使用してXQueryTester.javaをコンパイルします。マシンにJDK1.5以降がインストールされており、クラスパスが構成されていることを確認してください。JAVAの使用方法の詳細については、JAVAチュートリアルを参照してください。
E:\java\javac XQueryTester.java
Step 5 −XQueryTesterを実行します
E:\java\java XQueryTester
出力
次の結果が得られます-
<title lang="en">Learn .Net in 24 hours</title>
<title lang="en">Learn XQuery in 24 hours</title>
例を理解する
books.xmlはサンプルデータを表します。
books.xqyは、books.xmlで実行されるXQuery式を表します。この表現については、次の章で詳しく説明します。
JavaベースのXQueryエグゼキュータプログラムであるXQueryTesterは、books.xqyを読み取り、それをXQuery式プロセッサに渡して、式を実行します。次に、結果が印刷されます。