ナビゲーションをスキップ

WebLogic XML プログラマーズ ガイド

  前 次 前/次ボタンと目次ボタンとの区切り線 目次  

WebLogic Server を使用した XML アプリケーションの開発

以下の節では、Java プログラミング言語と WebLogic Server を使用して XML アプリケーションを開発する方法について説明します。ここでは、Java サーブレットと JavaServer Pages (JSP) を使用して Java アプリケーションを記述する方法について理解していることを前提にしています。サーブレットと JSP アプリケーションの記述方法については、『WebLogic HTTP サーブレット プログラマーズ ガイド』および『WebLogic JSP プログラマーズ ガイド』を参照してください。

 


XML アプリケーションの開発 : 主な手順

WebLogic Server XML サブシステムを使用して XML アプリケーションを開発する場合、通常は以下のプログラミング タスクの一部または全部を実行します。

  1. XML ドキュメントを解析します。
  2. XML ドキュメントは、いくつものソースから生じる可能性があります。たとえば、クライアントからの XML ドキュメントを受信するためにサーブレットを開発したり、サーブレットまたはその他の EJB などからの XML ドキュメントを受信するために EJB を記述したりする必要が生じるでしょう。それぞれのインスタンスでは、XML ドキュメントを解析してデータを操作できるようにすることが必要な場合もあります。

    このタスクの詳細については、「XML ドキュメントの解析」を参照してください。

  3. 新しい XML ドキュメントを生成します。
  4. サーブレットまたは EJB が XML ドキュメントを受信および解析し、何らかの形でデータを操作したら、サーブレットまたは EJB は、新しい XML ドキュメントを生成してクライアントに返すか、他の EJB に渡さなければならないことがあります。

    このタスクの詳細については、「新しい XML ドキュメントの生成」を参照してください。

  5. XML データを他の形式に変換します。
  6. XML ドキュメントを解析するか、新しい XML ドキュメントを生成したら、サーブレットまたは EJB は、その XML を HTML、WML、またはプレーン テキストなどの形式に変換しなければならないことがあります。

    このタスクの詳細については、「JAXP による XML データの変換」を参照してください。

 


XML ドキュメントの解析

この節では、JAXP により DOM モードと SAX モードで XML ドキュメントを解析する方法、およびサーブレットから XML ドキュメントを解析する方法について説明します。

注意 : WebLogic XML Streaming API を使用した XML ドキュメントの解析方法の詳細については、「WebLogic XML Streaming API の使い方」を参照してください。

前述のように、Administration Console の XML レジストリを使用して以下の項目をコンフィグレーションします。

Administration Console でこれらのタスクを実行する方法については、「WebLogic Server XML の管理」を参照してください。

SAX モードによる XML ドキュメント解析の詳細なサンプルについては、WL_HOME\samples\server\examples\src\examples\xml\sax ディレクトリを参照してください。WL_HOME は、WebLogic Platform の最上位のディレクトリです。

SAX モードで JAXP を使用した XML ドキュメントの解析

次のコード サンプルは、SAX パーサ ファクトリをコンフィグレーションして検証パーサを作成する方法を示したものです。また、MyHandler クラスをパーサに登録する方法も示しています。MyHandler クラスは、SAX 解析イベントまたはエラーのカスタム動作を提供するために DefaultHandler クラスの任意のメソッドをオーバーライドできます。

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
...
MyHandler handler = new MyHandler();
// MyHandler は org.xml.sax.helpers.DefaultHandler を拡張
  // SAXParserFactory のインスタンスを取得
SAXParserFactory spf = SAXParserFactory.newInstance();
// 検証パーサを指定
spf.setValidating(true); // DTD をロードする必要がある
// ファクトリから SAX パーサのインスタンスを取得
SAXParser sp = spf.newSAXParser();
// ドキュメントを解析
sp.parse("http://server/file.xml", handler);
...

注意 : 組み込みパーサ以外のパーサを使用する場合は、WebLogic Server Administration Console を使用して XML レジストリでパーサを指定します。指定しなかった場合、SaxParserFactory.newInstance メソッドは組み込みパーサを返します。組み込みパーサ以外のパーサを使用する WebLogic Server のコンフィグレーション手順については、「組み込み以外のパーサまたはトランスフォーマのコンフィグレーション」を参照してください。

SAX モードによる XML ドキュメント解析の詳細なサンプルについては、WL_HOME\samples\server\examples\src\examples\xml\sax ディレクトリを参照してください。WL_HOME は、WebLogic Platform の最上位のディレクトリです。

DOM モードで JAXP を使用した XML ドキュメントの解析

次のコード サンプルでは、XML ドキュメントを解析し、DocumentBuilder オブジェクトから org.w3c.dom.Document ツリーを作成する方法を示します。

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
...
// DocumentBuilderFactory のインスタンスを取得
DocumentBuilderFactory dbf =
DocumentBuilderFactory.newInstance();
// 検証パーサを指定
dbf.setValidating(true); // DTD をロードする必要がある
// ファクトリから DocumentBuilder のインスタンスを取得
DocumentBuilder db = dbf.newDocumentBuilder();
// ドキュメントを解析
Document doc = db.parse(inputFile);
...

注意 : 組み込みパーサ以外のパーサを使用する場合は、WebLogic Server Administration Console でパーサを指定します。指定しなかった場合、DocumentBuilderFactory.newInstance メソッドは組み込みパーサを返します。組み込みパーサ以外のパーサを使用する WebLogic Server のコンフィグレーション手順については、「組み込み以外のパーサまたはトランスフォーマのコンフィグレーション」を参照してください。

DOM モードによる XML ドキュメント解析の詳細なサンプルについては、WL_HOME\samples\server\examples\src\examples\xml\dom ディレクトリを参照してください。WL_HOME は、WebLogic Platform の最上位のディレクトリです。

サーブレットでの XML ドキュメントの解析

Java サーブレット仕様バージョン 2.2 で、setAttribute メソッドと getAttribute メソッドに対するサポートが追加されました。属性は、リクエストに関連付けられたオブジェクトです。リクエスト オブジェクトは、クライアント リクエストからの全情報をカプセル化します。HTTP プロトコルでは、この情報は、リクエストの HTTP ヘッダとメッセージ本文を基にクライアントからサーバに転送されます。

WebLogic Server では、setAttribute メソッドと getAttribute メソッドを使用して XML ドキュメントを解析できます。SAX モード解析には setAttribute メソッドを使用し、DOM モード解析には getAttribute メソッドを使用します。

org.xml.sax.DefaultHandler 属性を使用したドキュメントの解析

次のコード サンプルでは、setAttribute メソッドの使い方を示します。

import weblogic.servlet.XMLProcessingException;
import org.xml.sax.helpers.DefaultHandler;
...
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
try {
request.setAttribute("org.xml.sax.helpers.DefaultHandler",
new DefaultHandler());
} catch(XMLProcessingException xpe) {
System.out.println("Error in processing XML");
xpe.printStackTrace();
return;
}
...

また、現在は非推奨となっているものの、org.xml.sax.HandlerBase 属性を使用して XML ドキュメントを解析することもできます。

request.setAttribute("org.xml.sax.HandlerBase", 
new HandlerBase());

注意 : このコード サンプルは、SAX と setAttribute メソッドでドキュメントを解析する簡単な方法を示したものです。ドキュメントを解析するこのメソッドは、他のサーブレット ベンダではサポートされていない WebLogic Server の便利な機能です。したがって、アプリケーションを他のサーブレット プラットフォームで実行する場合は、この機能を使用しないでください。

org.w3c.dom.Document 属性を使用したドキュメントの解析

次のコード サンプルでは、getAttribute メソッドの使い方を示します。

import org.w3c.dom.Document;
import weblogic.servlet.XMLProcessingException;
...
public void doPost(HttpServletRequest request,
HttpServletResponse response)
throws ServletException, IOException {
try {
Document doc = request.getAttribute("org.w3c.dom.Document");
} catch(XMLProcessingException xpe) {
System.out.println("Error in processing XML");
xpe.printStackTrace();
return;
}
...

注意 : このコード サンプルは、DOM と getAttribute メソッドでドキュメントを解析する簡単な方法を示したものです。ドキュメントを解析するこのメソッドは、他のサーブレット ベンダではサポートされていない WebLogic Server の便利な機能です。したがって、アプリケーションを他のサーブレット プラットフォームで実行する場合は、この機能を使用しないでください。

非検証パーサの検証

前述のとおり、整形式ドキュメントとは、W3C の XML 1.0 勧告のルールに従っている、構文的に正しいドキュメントのことです。有効なドキュメントとは、DTD またはスキーマで指定した制約に従っているドキュメントです。

非検証パーサは、ドキュメントが整形式かどうかを検証しますが、有効かどうかは検証しません。「XML パーサおよびトランスフォーマのコンフィグレーション タスク」で XML レジストリを使用した解析オプションのコンフィグレーション方法が説明されている WebLogic FastParser は、非検証パーサです。

(検証パーサの使用を前提に) ドキュメント解析時の検証を有効にするには、以下を実行する必要があります。

XML ドキュメント解析時のエンティティ解決の処理

この節では、XML パーサによる外部エンティティの識別および解決方法、および XML アプリケーションによる外部エンティティ解決のパフォーマンスを向上させる WebLogic Server の機能など、外部エンティティに関する一般的な情報について説明します。

外部エンティティに関する一般的な情報

外部エンティティは、XML ドキュメント内に記述されていないものの、XML ドキュメント内で参照されるさまざまなテキストです。実際のテキストは、同じコンピュータの他のファイル、Web 上など、どこにあってもかまいません。パーサは、ドキュメントの解析時に外部エンティティ参照に出会うと、参照されたテキストをフェッチし、テキストを XML ドキュメント内に配置してから、解析を続行します。外部エンティティの例が DTD です。XML ドキュメント内に DTD のテキストがすべて記述されているのではなく、別のファイルに格納されている DTD への参照が XML ドキュメント内にあります。

外部エンティティの識別方法には、システム ID とパブリック ID の 2 つがあります。システム ID は、URI で指定された位置を基に外部エンティティを参照します。パブリック ID は、外部で宣言されている名前を使用して情報を参照します。

次の例に、パブリック ID を使用して、J2EE アプリケーション アーカイブ (*.ear) を示す application.xml ファイルの DTD を参照する方法を示します。

<!DOCTYPE application PUBLIC "-//Sun Microsystems, 
Inc.//DTD J2EE Application 1.2//EN">

次の例は、システム ID のみによる外部 DTD の参照を示します。

<!DOCTYPE application SYSTEM "http://java.sun.com/j2ee/dtds/application_1_2.dtd">

次の例は、パブリック ID およびシステム ID の両方を使用する参照です。SYSTEM キーワードが省略されています。

<!DOCTYPE application 
PUBLIC "-//Sun Microsystems, Inc.//DTD J2EE Application 1.2//EN"
"http://java.sun.com/j2ee/dtds/application_1_2.dtd">

WebLogic Server のエンティティ解決機能の使用

以下の WebLogic Server 機能を使用すると、XML アプリケーションの外部エンティティ解決のパフォーマンスを向上させることができます。

XML レジストリで、外部エンティティの場所 (ローカルまたは URL)、およびどのキャッシュ オプションが Web 上のエンティティ用かを識別するエンティティ解決エントリを作成します。システム ID またはパブリック ID を使用して外部エンティティ エントリを識別します。次に、XML ドキュメントで、この外部エンティティを参照すると、WebLogic Server は、ドキュメントの解析時にローカル コピーまたはキャッシュされたコピー (コンフィグレーションによる) を取り出します。

XML レジストリでの外部エンティティ レジストリ作成の詳細については、「外部エンティティのコンフィグレーション タスク」を参照してください。

組み込みパーサ以外のパーサの使用

JAXP で XML ドキュメントを解析する場合、WebLogic Server XML レジストリ (Administration Console でコンフィグレーション) には以下の選択肢があります。

XML レジストリで解析オプションをコンフィグレーションする手順については、「XML パーサおよびトランスフォーマのコンフィグレーション タスク」を参照してください。

WebLogic FastParser の使用

WebLogic Server には、中小規模の XML ドキュメント (最大 10,000 個の要素) の検証用に特別に設計された高性能の非検証 XML パーサ (WebLogic FastParser) があります。大きなドキュメントになると、このパーサのパフォーマンスは、Apache Xerces などの標準パーサと変わらなくなります。

注意 : WebLogic FastParser は、SAX スタイルの解析のみをサポートしています。

WebLogic FastParser を WebLogic Server 全体のパーサとして使用するように指定することもできます。または、「XML パーサおよびトランスフォーマのコンフィグレーション タスク」で説明されているように、XML レジストリを使用することで特定の DOCTYPE で使用するように指定することもできます。[SAX パーサ ファクトリ] フィールドを weblogic.xml.babel.jaxp.SAXParserFactoryImpl に設定します。

 


新しい XML ドキュメントの生成

この節では、DOM ドキュメント ツリーから JSP を使用して XML ドキュメントを生成する方法について説明します。

注意 : WebLogic XML Streaming API を使用した XML ドキュメントの生成方法の詳細については、「WebLogic XML Streaming API の使い方」を参照してください。

DOM ドキュメント ツリーからの XML の生成

この節では、DOM ドキュメント ツリーから XML ドキュメントを作成する以下の 2 つの方法について説明します。

Apache serialize クラスを使用する場合

weblogic.apache.xml.serialize クラスを使って DOM ドキュメント ツリーを XML テキストに変換して、DOM ドキュメント ツリーから XML ドキュメントを生成できます。このクラスの詳細については、weblogic.apache.xml.serialize の Javadoc を参照してください。

次のコード サンプルでは、このクラスの使い方を示します。

注意 : 次の例では、JAXP を使用しない代わりに、Apache 固有の API を直接使用します。

package test;
import java.io.OutputStreamWriter;
import java.util.Date;
import java.text.DateFormat;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import weblogic.apache.xerces.dom.DocumentImpl;
import weblogic.apache.xml.serialize.DOMSerializer;
import weblogic.apache.xml.serialize.XMLSerializer;
public class WriteXML {
  public static void main(String[] args) throws Exception {
    // DOM ツリーを作成 
Document doc= new DocumentImpl();
Element message = doc.createElement("message");
doc.appendChild(message);
Element text = doc.createElement("text");
text.appendChild(doc.createTextNode("Hello world."));
message.appendChild(text);
Element timestamp = doc.createElement("timestamp");
timestamp.appendChild(
doc.createTextNode(
DateFormat.getDateInstance().format(new Date()))
);
message.appendChild(timestamp);
    // DOM を XML テキストにシリアライズして stdout に出力 
DOMSerializer xmlSer =
new XMLSerializer(new OutputStreamWriter(System.out),null);
xmlSer.serialize(doc);
}
}

JAXP Transformer クラスを使用する場合

次のコード サンプルのセグメントで示すように、javax.xml.transform.Transformer クラスを使用して、DOM オブジェクトを XML ストリームにシリアライズできます。

import javax.xml.parsers.DocumentBuilder; 
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import java.io.*;
...
TransformerFactory trans_factory = TransformerFactory.newInstance();
Transformer xml_out = trans_factory.newTransformer();
Properties props = new Properties();
props.put("method", "xml");
xml_out.setOutputProperties(props);
xml_out.transform(new DOMSource(doc), new StreamResult(System.out));

このサンプルでは、Transformer.transform() メソッドが DOM オブジェクトを XML ストリームに変換しています。transform() メソッドは、doc 変数に格納されている DOM ツリーから作成された javax.xml.transform.dom.DOMSource オブジェクトを入力としてとり、それを javax.xml.transform.stream.StreamResult オブジェクトに変換して、結果の XML ドキュメントを標準出力に書き出します。

JSP での XML ドキュメントの生成

通常、JSP は HTML の生成に使用しますが、JSP を使用して XML ドキュメントを生成することもできます。

JSP で XML を生成する場合、以下のように JSP ページのコンテンツ タイプを設定する必要があります。

<%@ page contentType="text/xml"%>
... XML document

次のコードでは、JSP による XML ドキュメントの生成例を示します。

<?xml version="1.0">
<%@ page contentType="text/xml" import="java.text.DateFormat,java.util.Date" %>
<message>
<text>
Hello World.
</text>
<timestamp>
<%
out.print(DateFormat.getDateInstance().format(new Date()));
%>
</timestamp>
</message>

JSP による XML の生成の詳細については、http://java.sun.com/products/jsp/html/JSPXML.html を参照してください。

 


XML ドキュメントの変換

変換とは、XML ドキュメント (変換元) を他の形式 (変換結果) に変換することです。通常は、別の XML ドキュメント、HTML、無線用マーク付け言語 (Wireless Markup Language : WML) に変換されます。この節では、JAXP を使用して、および JSP 内から JSP タグを使用して XML ドキュメントを変換する方法について説明します。

JAXP による XML データの変換

バージョン 1.1 の JAXP では、プラグイン可能の変換が提供されています。つまり、JAXP 準拠の任意のトランスフォーマ エンジンを使用できます。

JAXP は、XML データをさまざまな形式に変換するために以下のインタフェースを提供します。

変換には、入力と出力の多くの組み合わせがあります。

JAXP による XML ドキュメント変換の例

次に抜粋するコード サンプルでは、JAXP を使用して myXMLdoc.xmlmystylesheet.xsl スタイルシートを使用する別の XML ドキュメントに変換する方法を示します。

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.stream.StreamResult;
Transformer trans;
TransformerFactory factory = TransformerFactory.newInstance();
String stylesheet = "file://stylesheets/mystylesheet.xsl";
String xml_doc = "file://xml_docs/myXMLdoc.xml";

trans = factory.newTransformer(new StreamSource(stylesheet));
trans.transform(new StreamSource(xml_doc),
new StreamResult(System.out));

DOM ドキュメントを XML ストリームに変換する方法の例については、「JAXP Transformer クラスを使用する場合」を参照してください。

Xalan API 使用から JAXP 1.1 API への XML コードの変換

アプリケーションに Xalan 固有のコードが含まれている場合、それを JAXP を使用するように変更することをお勧めします。

この節では、Xalan API 使用から JAXP 使用に変換するために XML アプリケーションで必要な変更を簡単に説明します。よく似た変換タスクを実行する 2 つのコード セグメントを比較します。一方のコード セグメントでは Xalan API を直接使用し、もう一方では JAXP を使用します。

次の Java コード セグメントでは JAXP を使用しています。

import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamSource;
import javax.xml.transform.stream.StreamResult;
...
Transformer trans;
TransformerFactory factory = TransformerFactory.newInstance();
String stylesheet = "file://stylesheets/mystylesheet.xsl";
String xml_doc = "file://xml_docs/myXMLdoc.xml";
trans = factory.newTransformer(new StreamSource(stylesheet));
trans.transform(new StreamSource(xml_doc),
new StreamResult(System.out));

次の Java コード セグメントでは Xalan API を直接使用しています。

 /*
* このコード サンプルは、Apache Software Foundation で提供されているコード
* からの引用。 Apache SoftWare Foundation のために
* 多くの個人からなる有志の協力を得て完成した。
* 元のソフトウェア著作権は以下のとおり。
* copyright (c) 1999, Lotus Development Corporation.,
* http://www.lotus.com。Apache Software Foundation に関する情報については
* <http://www.apache.org/> を参照
*/
import org.apache.xalan.xslt.XSLTProcessorFactory;
import org.apache.xalan.xslt.XSLTInputSource;
import org.apache.xalan.xslt.XSLTResultTarget;
import org.apache.xalan.xslt.XSLTProcessor;
...
XSLTProcessor processor = XSLTProcessorFactory.getProcessor();
String stylesheet = "file://stylesheets/mystylesheet.xsl";
String xml_doc = "file://xml_docs/myXMLdoc.xml";
processor.process(new XSLTInputSource(xml_doc),
new XSLTInputSource(stylesheet),
new XSLTResultTarget(System.out));

次の表では、前の例で XML ドキュメントの変換に使用した Xalan と JAXP のインタフェースおよびメソッドの名前を示します。この表を基に、既存の Xalan アプリケーションを完全な JAXP アプリケーションに変換してください。

注意 : この表は、Xalan と JAXP の間のマッピング全体ではなく、前の例で使用したメイン クラスおよびメソッドのみを示します。各 API の詳細については、Apache の Web サイト (http://www.apache.org) および Sun の Web サイト (http://java.sun.com/xml/index.html) を参照してください。

表 2-1 Xalan と JAXP のクラスとインタフェースの対応

クラスまたはインタフェースの説明

Xalan 1.X

JAXP 1.1

XML ドキュメントの変換に使用するメイン クラス

XSLTProcessor

Transformer

トランスフォーマ オブジェクトの作成に使用するファクトリ クラス

XSLTProcessorFactory

TransformerFactory

ファクトリの新しいインスタンスの作成に使用するメソッド

なし

TransformerFactory.newInstance()

新しいトランスフォーマ オブジェクトの作成に使用するメソッド

XSLTProcessorFactory.getProcessor()

TransformerFactory.newTransformer()

XML ドキュメントまたは XSL スタイルシートなどの変換元を保持するクラス

XSLTInputSource

StreamSource

変換結果を保持するクラス

XSLTResultTarget

StreamResult

変換を実行するメソッド

XSLTProcessor.process()

Transformer.transform()

JSP タグによる XML データの変換

WebLogic Server では、JSP 内から XSLT トランスフォーマに簡単にアクセスするための小規模な JSP タグ ライブラリが提供されます。このタグを使用すると XML ドキュメントを HTML、WML などに変換できますが、必須ではありません。

JSP タグ ライブラリは、メイン タグの x:xsltx:xslt タグの内部で使用できる 2 つのサブタグ (x:stylesheetx:xml) で構成されます。

XSLT JSP タグ構文

XSLT JSP タグ構文は XML を基にしています。JSP タグは、開始タグ、本文 (省略可能)、対応する終了タグで構成されます。開始タグには要素名と属性 (省略可能) が含まれます。

次の構文では、WebLogic Server で提供される 3 つの XSLT JSP タグを JSP で使用する方法について示します。属性は省略可能です。また、x:stylesheet および x:xml タグも省略可能です。この構文の後に、x:xslt および x:stylesheet タグの属性を示す表を記載します。x:xml タグには属性はありません。

<x:xslt  [xml="uri of XML file"]
[media="media type to determine stylesheet"]
[stylesheet="uri of stylesheet"]
<x:xml>In-line XML goes here
</x:xml>
<x:stylesheet [media="media type to determine stylesheet"]
[uri="uri of stylesheet"]
</x:stylesheet>
</x:xslt>

次の表に、x:xslt タグの属性を示します。

表 2-2 x:xslt JSP タグの属性

x:xslt タグの属性

必須/省略可能

データ型

説明

xml

省略可能

String

変換する XML ファイルの場所を指定する。場所は、タグが使用される Web アプリケーションのドキュメント ルートへの相対パス。

media

省略可能

String

HTML または WML など、ドキュメントの出力タイプを定義する。このタイプによって、XML ドキュメントの変換時に使用するスタイルシートが決定される。

この属性は、x:xslt タグの本文の内部で x:stylesheet タグで囲まれた media 属性と組み合わせて使用できる。x:xslt タグの media 属性の値は x:stylesheet タグに囲まれた media 属性の値と比較される。値が等しい場合、x:stylesheet タグの uri 属性で指定されたスタイルシートが XML ドキュメントに適用される。

注意 : 同じ x:xslt タグ内で media 属性と stylesheet 属性の両方を設定するとエラーが発生する。

stylesheet

省略可能

String

XML ドキュメントの変換に使用するスタイルシートの場所を指定する。場所は、タグが使用される Web アプリケーションのドキュメント ルートへの相対パス。

注意 : 同じ x:xslt タグ内で media 属性と stylesheet 属性の両方を設定するとエラーが発生する。

次の表に、x:stylesheet タグの属性を示します。

表 2-3 x:stylesheet JSP タグの属性

x:stylesheet タグの属性

必須/省略可能

データ型

説明

media

省略可能

String

HTML または WML など、ドキュメントの出力タイプを定義する。このタイプによって、XML ドキュメントの変換時に使用するスタイルシートが決定される。

この属性は x:xslt タグに囲まれた media 属性と組み合わせて使用する。x:xslt タグの media 属性の値は x:stylesheet タグに囲まれた media 属性の値と比較される。値が等しい場合、x:stylesheet タグの uri 属性で指定されたスタイルシートが XML ドキュメントに適用される。

uri

省略可能

String

media 属性の値が、x:xslt タグに囲まれた media 属性の値と一致する場合に使用するスタイルシートの場所を指定する。場所は、タグが使用される Web アプリケーションのドキュメント ルートへの相対パス。

XSLT JSP タグの使い方

x:xslt タグは本文の有無に関係なく使用でき、属性は省略可能です。この節では、本文や 1 つまたは複数の属性を指定したかどうかによってタグの動作を決定するルールについて説明します。

x:xslt JSP タグが空タグ (本文なし) の場合、以下の説明が適用されます。

警告 : 同じ x:xslt タグ内で media 属性と stylesheet 属性の両方を設定するとエラーが発生します。

本文がある XSLT JSP タグは、<x:xml> タグまたは <x:stylesheet> タグを含んでいる場合があります。以下の説明が適用されます。

XSLT JSP タグによる XML ドキュメントの変換

XSLT JSP タグで XML ドキュメントを変換するには、以下の手順を実行します。

  1. WL_HOME\server\ext ディレクトリの xmlx.zip ファイルを開いて、xmlx-tags.jar ファイルを Web アプリケーションの /lib ディレクトリに移動します。ここで、WL_HOME は、WebLogic Server 配布キットをインストールした最上位のディレクトリです。
  2. <taglib> エントリを web.xml ファイルに追加します。次に例を示します。
  3. <taglib>
    <taglib-uri>xmlx.tld</taglib-uri>
    <taglib-location>/WEB-INF/lib/xmlx-tags.jar</taglib-location>
    </taglib>
  4. タグを使用するには、次の行を JSP ページに追加します。
  5. <%@ taglib uri="xmlx.tld" prefix="x"%>
  6. トランスフォーマをコンフィグレーションします。以下の手順では、トランスフォーマのコンフィグレーションの一般的な方法を示します。
    1. 次のコード行を入力して xslt.jsp ファイルを作成します。
    2. <%@ taglib uri="xmlx.tld" prefix="x"%><x:xslt/>
    3. 次のように、xslt.jsp ファイルを web.xml ファイルに登録します。
    4. <servlet>
      <servlet-name>myxsltinterceptor</servlet-name>
      <jsp-file>xslt.jsp</jsp-file>
      </servlet>
      <servlet-mapping>
      <servlet-name>myxsltinterceptor</servlet-name>
      <url-pattern>/xslt/*</url-pattern>
      </servlet-mapping>
    5. XML、DTD、XSL ドキュメントまたはサーブレットを Web アプリケーションに配置します。
    6. xslt プレフィックスを XML ドキュメントのパス名に追加 (たとえば、docs/fred.xmlxslt/docs/fred.xml に変更) し、ドキュメントにアクセスします。web.xml ファイルの <url-pattern> エントリによって、WebLogic Server は、XML ドキュメントに自動的に XSLT トランスフォーマを実行し、ドキュメントにデフォルトのスタイルシートを設定します。
    7. メディア タイプを定義するには、XML ドキュメントのメディア タイプと出力のコンテンツ タイプを指定するコードを JSP に追加します。
    8. メディア タイプを xslt タグに渡して、応答オブジェクトのコンテンツ タイプを設定します。

注意 : 他の形の XSLT JSP タグは、スタイルシートが XML ドキュメントで指定されていない場合または XML スタイルシートがインラインで生成される場合に使用されます。

JSP での XSLT JSP タグの使用例

JSP から抜粋した次のコードは、XSLT JSP タグを使用し、JSP を要求するクライアントのタイプに従って、XML を HTML または WML に変換する方法を示します。JSP は、クライアントがブラウザの場合は HTML を返し、無線デバイスの場合は WML を返します。

初めに、JSP では HttpServletRequest オブジェクトの getHeader() メソッドを使用して、JSP を要求するクライアントのタイプを識別します。続いて、myMedia 変数を wml または html に適宜設定します。JSP で myMedia 変数を html に設定した場合は、content 変数に含まれる XML ドキュメントに html.xsl スタイルシートが適用されます。同様に、JSP で myMedia 変数を wml に設定した場合は、wml.xsl スタイルシートが適用されます。

<%
String clientType = request.getHeader("User-Agent");
// デフォルトでは WML クライアント
String myMedia = "wml";

// クライアントが HTML ブラウザの場合
   if (clientType.indexOf("Mozilla") != -1) {
myMedia = "http"
}
%>

<x:xslt media="<%=myMedia%>">
<x:xml><%=content%></x:xml>
<x:stylesheet media="html" uri="html.xsl"/>
<x:stylesheet media="wml" uri="wml.xsl"/>
</x:xslt>

組み込みトランスフォーマ以外のトランスフォーマの使用

WebLogic Server の XML レジストリ (Administration Console でコンフィグレーション) では、以下の項目をコンフィグレーションします。

XML レジストリで変換オプションをコンフィグレーションする手順については、「XML パーサおよびトランスフォーマのコンフィグレーション タスク」を参照してください。

 

フッタのナビゲーションのスキップ  ページの先頭 前 次