XMLDB.jp

XMLDB開発支援
HOME  >  XMLDB開発支援  >  チュートリアル ~JAVA編(9):スタイルシートをクエリー結果に適用する~

チュートリアル ~JAVA編(9):スタイルシートをクエリー結果に適用する~

2004年6月3日 更新


チュートリアルのコンパイルと実行

ステップ 1

これまでのチュートリアルをすべて実行済みで、環境が正しくセットアップされていることを確認します。さらに、コード内のサーバー情報とログイン情報の変更方法を理解していることを確認します。


ステップ 2

(このチュートリアルの最後にある) tutorial9.javaをコンパイルして実行します。正常に実行されると、次のように表示されます。


コード

Store results:
<?xml version="1.0" encoding="UTF-8" ?>
<Store-Results>
        <Documents-Processed> 1 </Documents-Processed>
        <Last-Doc-ID> 55 </Last-Doc-ID>
</Store-Results>

Query Results:
<?xml version="1.0" encoding="UTF-8" ?>
<Query-Results>
        <tutorial9>
                <title>Tutorial 9 - XSLT</title>
                <author>Richard Whittaker</author>
        </tutorial9>
        <tutorial9>
                <title>The Lord of the Rings</title>
                <author>J.R.R. Tolkien</author>
        </tutorial9>
</Query-Results>

Transform Results:
<html>
<h1>Tutorial 9 - XSLT</h1>
<h2>Richard Whittaker</h2>
</html>

コードの詳細解説

これまでのチュートリアルと比べて、とくに変わったところはありません。ただし、以下の点が異なります。


コード

NeoTransform transform = new NeoTransform(neosession);
...
s = transform.transformXML(query, xsl);


クエリーを実行可能にするために、SessionManagedNeoConnectionを使ってNeoTransformオブジェクトを初期化します。


transformXMLメソッドはクエリーを実行し、2番目のパラメータとして提供されたXSLを使って、そのクエリーの結果を変換します。transformXMLの2番目のパラメータはStringオブジェクトであり、さまざまな方法で取得されます。この例では、単純化のために、ソースコードとして直接提供します。


いくつかの試行
ここでは単にtransformXMLに渡されるクエリー結果を変換しているだけですが、それを示すために、3つの異なるtransformXMLステートメントが提供されています(そのうち2つはコメント化されています)。試しに、それぞれを非コメント化またはコメント化してみてください。あるいは、独自の第3のtutorial9文書を保存することもできます。提供されているサンプルは、保存されている文書のどちらか一方、または両方を変換します。


--- チュートリアル(9)の終わり --- 以下はソースコードです ---


コード

//Title:        tutorial9 using NeoCore XMS
//Version:      1.0
//Date:         4/26/04
//Copyright:    Copyright (c) 2004
//Author:       Richard Whittaker
//Company:      Xpriori
//Description:  Demonstrates an XSLT transform

import com.neocore.httpclient.*;

public class tutorial9 {

   // change the below "server" variable to the machine name or IP if
   // not running XMS on this machine
   public static String server = "localhost";
   public static SessionManagedNeoConnection neosession;
   public static String sid = null;

   public static void main(String[] args)
   {
      // This is the xslt we'll use for the transform.  This can be obtained from a
      // file or other source if desired.  Formatting is unimportant - it's just
      // indented here for readability.
      String xsl =
         "<xsl:stylesheet version='1.0' xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>" +
         "   <xsl:template match=\"/\">"                          +
         "      <html>"                                           +
         "         <xsl:apply-templates select=\"//tutorial9\"/>" +
         "      </html>"                                          +
         "   </xsl:template>"                                     +
         "   <xsl:template match=\"tutorial9\">"                  +
         "      <h1><xsl:value-of select=\"title\"/></h1>"        +
         "      <h2><xsl:value-of select=\"author\"/></h2>"       +
         "   </xsl:template>"                                     +
         "</xsl:stylesheet>";

      //----------------------- get connection and login ---------------------
      try{
         // neosession will manage session id for us
         neosession = new  SessionManagedNeoConnection(server, 7700);   
      }catch(Exception e){
         System.out.println("Cannot connect to NeoCore server:" + e);
         return;
      }
      try{
         // change the below password to what you entered during the installation
         sid = neosession.login("Administrator", "password");
      }catch(Exception e){
         System.out.println("Cannot login to NeoCore server:" + e);
         return;
      }

      try
      {
         //---------- first, delete any tutorial9 documents -----------
         String s = neosession.deleteXML("/ND/tutorial9");

         //-------------- now store a couple documents ----------------
         s = neosession.storeXML("<tutorial9><title>Tutorial 9 - XSLT</title><author>Richard Whittaker</author></tutorial9>", null, null);
         s = neosession.storeXML("<tutorial9><title>The Lord of the Rings</title><author>J.R.R. Tolkien</author></tutorial9>", null, null);
         System.out.println("Store results:\n" + s + "\n");
 
         //----------------- now query the documents ------------------
         s = neosession.queryXML("/ND/tutorial9");
         System.out.println("Query Results:\n" + s + "\n");

         //---------- now transform those results into html -----------
         NeoTransform transform = new NeoTransform(neosession);

         String query;
         // the results of "query" will be transformed
         query = "/ND/tutorial9[author=\"Ri\"*]";
         //query = "/ND/tutorial9[title=\"The Lord of the Rings\"]";
         //query = "/ND/tutorial9";

         s = transform.transformXML(query, xsl);
         System.out.println("Transform Results:\n" + s + "\n");

         //------------------------- logout ---------------------------
         neosession.logout();
      }
      catch(Exception e)
      {
         System.out.println("NeoCore error: " + e);
      }
   }
}
// END OF FILE - tutorial9.java

▲このページのTOPへ

  • 無償で使える!XMLDB「NeoCore」
  • サイバーテック求人情報
  • メールマガジン申し込み
  • TEchScore

  • ▲NeoCoreについて記載されています!

  • ▲XMLマスター教則本です。試験対策はこれでばっちり!
Copyright (c) CyberTech corporation ltd. All ights Reserved. | サイバーテックについて | ご利用ガイド