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

この章では、Javaプログラミング言語とWebLogic Server XMLサブシステムを使用してXMLアプリケーションを開発する方法について説明します。ここでは、JavaサーブレットとJava Server Pages (JSP)を使用してJavaアプリケーションを記述する方法について理解していることを前提にしています。

この章の内容は次のとおりです。

サーブレットとJSPアプリケーションの記述方法については、『Oracle WebLogic Server Webアプリケーション、サーブレット、JSPの開発』を参照してください。

XMLアプリケーションの開発:主なステップ

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

  1. XMLドキュメントを解析します。

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

    「XMLドキュメントの解析」を参照してください。

  2. 新しいXMLドキュメントを生成します。

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

    「新しいXMLドキュメントの生成」を参照してください。

  3. XMLデータを他の形式に変換します。

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

    「JAXPによるXMLデータの変換」を参照してください。

XMLドキュメントの解析

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

ノート:

Streaming API for XML (StAX)を使用したXMLドキュメントの解析方法の詳細は、「Streaming API for XML (StAX)の使い方」を参照してください。

WebLogic Server管理コンソールのXMLレジストリを使用して次の項目を構成します。

  • ドキュメント・タイプごとのパーサー。指定したドキュメント・タイプのデフォルト・パーサーのかわりに使用されます。

  • 外部エンティティの解決。XMLドキュメントの解析中に外部ファイルを見つけるように要求された場合にXMLパーサーが実行する処理です。

WebLogic Server管理コンソールでこれらのタスクを実行する方法の詳細は、「WebLogic Server XMLの管理」を参照してください。

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

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

import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;

...
MyHandler handler = new MyHandler(); 
// MyHandler extends org.xml.sax.helpers.DefaultHandler.

  //Obtain an instance of SAXParserFactory.
  SAXParserFactory spf = SAXParserFactory.newInstance();
  //Specify a validating parser.
  spf.setValidating(true); // Requires loading the DTD.
  //Obtain an instance of a SAX parser from the factory.
  SAXParser sp = spf.newSAXParser();
  //Parse the documnt.
  sp.parse("http://server/file.xml", handler);
...

ノート:

デフォルト・パーサー以外のパーサーを使用する場合は、WebLogic Server管理コンソールを使用してXMLレジストリでパーサーを指定します。指定しなかった場合、SaxParserFactory.newInstanceメソッドはデフォルト・パーサーを返します。デフォルト・パーサー以外のパーサーを使用するWebLogic Serverの構成手順については、「デフォルト以外のパーサーまたはトランスフォーマの構成」を参照してください

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

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

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.w3c.dom.Document;

...
//Obtain an instance of DocumentBuilderFactory.
DocumentBuilderFactory dbf =
                 DocumentBuilderFactory.newInstance();
//Specify a validating parser.
dbf.setValidating(true); // Requires loading the DTD.
//Obtain an instance of a DocumentBuilder from the factory.
DocumentBuilder db = dbf.newDocumentBuilder();
//Parse the document.
Document doc = db.parse(inputFile);
...

ノート:

デフォルト・パーサー以外のパーサーを使用する場合は、WebLogic Server管理コンソールでパーサーを指定します。指定しなかった場合、DocumentBuilderFactory.newInstanceメソッドはデフォルト・パーサーを返します。デフォルト・パーサー以外のパーサーを使用するWebLogic Serverの構成手順については、「デフォルト以外のパーサーまたはトランスフォーマの構成」を参照してください

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

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

WebLogic Serverでは、setAttributeメソッドとgetAttributeメソッドを使用してXMLドキュメントを解析できます。「org.xml.sax.DefaultHandler属性を使用したドキュメントの解析」および「org.w3c.dom.Document属性を使用したドキュメントの解析」の説明に従って、SAXモードの検証ではsetAttributeメソッド、DOMモードの検証ではgetAttributeメソッドを使用します

ただし、setAttributeメソッドおよびgetAttributeメソッドを使用できるようにするには、デフォルトですべてのWebLogic Serverインスタンスにデプロイされているweblogic.servlet.XMLParsingHelperというWebLogic Serverサーブレット・フィルタをWebアプリケーションの一部として構成する必要があります。WebアプリケーションのWEB-INFディレクトリにあるweb.xmlデプロイメント記述子に次の要素を追加してサーブレット・フィルタを構成します。

<filter>
  <filter-name>XMLParsingHelper</filter-name>
  <filter-class>weblogic.servlet.XMLParsingHelper</filter-class>
</filter>

<filter-mapping>
  <filter-name>XMLParsingHelper</filter-name>
  <url-pattern>/*</url-pattern>
  <dispatcher>REQUEST</dispatcher>
</filter-mapping>

サーブレット・フィルタの詳細は、Oracle WebLogic Server Webアプリケーション、サーブレット、JSPの開発フィルタを参照してください。

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またはスキーマで指定した制約に従っているドキュメントです。

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

  • 以下の例で示すように、SAXParserFactory.setValidating()メソッドをtrueに設定します。

    SAXParserFactory factory = SAXParserFactory.newInstance();
    factory.setValidating(true);
    
  • 解析するXMLドキュメントで、(インラインまたは参照で) DTDまたはスキーマが定義されているようにします。

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

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

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

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

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

次の例では、パブリックIDを使用して、Java EEアプリケーション・アーカイブ(*.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アプリケーションの外部エンティティ解決のパフォーマンスを向上させることができます。

  • 外部エンティティのコピーを、WebLogic管理サーバーのホストとなるコンピュータに永続的に格納します。

  • WebLogic Serverが、URLなどのHTTPインタフェースをサポートする外部リポジトリにある外部エンティティを自動的に取得およびキャッシュするように指定します。エンティティのキャッシュ先をメモリーにするかディスクにするかを指定し、キャッシュされているエントリが自動的に更新されるキャッシュの有効期限を指定できます。

    この取出し/キャッシュ機能を使用すると、実際に外部エンティティをローカル・コンピュータにコピーする必要はなくなります。XMLアプリケーションは、ドキュメントを解析するたびにではなく、指定した期間でのみ外部エンティティを参照するので、アプリケーションのパフォーマンスを大幅に向上させることができ、必要に応じて外部エンティティを最新の状態で参照できます。

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

XMLレジストリでの外部エンティティ・レジストリ作成の詳細は、「外部エンティティの構成タスク」を参照してください

デフォルト・パーサー以外のパーサーの使用

JAXPでXMLドキュメントを解析する場合、WebLogic Server XMLレジストリ(WebLogic Server管理コンソールで構成)には次の選択肢があります。

  • デフォルト・パーサーをサーバー全体のパーサーとして使用します。

  • 選択した別のパーサー(別のバージョンのApache Xercesパーサーなど)をサーバー全体のパーサーとして構成します。

  • システムID、パブリックID、またはルート要素に基づいた特定のXMLドキュメント・タイプに対応するパーサーを構成します。

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

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

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

ノート:

Streaming API for XML (StAX)を使用したXMLドキュメントの生成方法の詳細は、「Streaming API for XML (StAX)の使い方」を参照してください。

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

サンプル・コードの次のセグメントで示すように、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>

XMLドキュメントの変換

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

JAXPによるXMLデータの変換

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

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

  • javax.xml.transform

    ドキュメントを変換するための汎用APIがあります。SAXかDOMかに関係なく、変換元および変換結果の形式を推測し、できる限り少ない候補に絞り込みます。

  • javax.xml.transform.stream

    ストリーム固有およびURI固有の変換APIを実装します。具体的には、InputStreamsとURLを変換元、OutputStreamsとURLを変換結果として指定できるStreamSourceクラスおよびStreamResultクラスが定義されています。

  • javax.xml.transform.dom

    DOM固有の変換APIを実装します。具体的には、DOMツリーを変換元か変換結果、またはその両方として指定できるDOMSourceクラスおよびDOMResultクラスが定義されています。

  • javax.xml.transform.sax

    SAX固有の変換APIを実装します。具体的には、org.xml.sax.ContentHandlerイベントを変換元か変換結果、またはその両方として指定できるSAXSourceクラスおよびSAXResultクラスが定義されています。

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

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

抜粋した次のサンプル・コードでは、JAXPを使用してmyXMLdoc.xmlを、mystylesheet.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によるXMLデータの変換」を参照してください

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

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

ノート:

この機能はWebLogic Server 12.1.2.0で非推奨となり、将来のリリースでは削除される可能性があります。

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

ノート:

JSPタグ・ライブラリは使い勝手を良くするために用意されているだけであり、JSP内からXSLTトランスフォーマへのアクセスに必須というわけではありません。

XSLT JSPタグ構文

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

ノート:

この機能はWebLogic Server 12.1.2.0で非推奨となり、将来のリリースでは削除される可能性があります。

次の構文では、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>

表3-1 x:xsltタグの属性について説明します。

表3-1 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属性の両方を設定するのは誤りです。

表3-2 x:stylesheetタグの属性について説明します。

表3-2 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つまたは複数の属性を指定したかどうかによってタグの動作を決定するルールについて説明します。

ノート:

この機能はWebLogic Server 12.1.2.0で非推奨となり、将来のリリースでは削除される可能性があります。

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

  • 属性が設定されていない場合、XMLドキュメントはサーブレットのパスとデフォルトのメディア・スタイルシートで処理されます。XMLファイルで、<?xml-stylesheet>処理指示を使用してデフォルトのメディア・スタイルシートを指定します。デフォルトのスタイルシートにはmedia属性はありません。

    この処理のタイプでは、XSLT処理を実行するファイル・サーブレットとしてタグ拡張を含むJSPページを登録できます。

  • media属性のみが設定されている場合、XMLドキュメントは、サーブレットのパスと指定されたメディア・タイプを使用して処理されます。x:xsltタグのmediaタイプ属性の値は、XMLドキュメントにある<?xml-stylesheet>処理指示のmedia属性の値と比較されます。一致した場合は対応するスタイルシートが適用されます。一致しない場合はデフォルトのメディア・スタイルシートが使用されます。メディア・タイプ属性は、ドキュメントの出力タイプ(XML、HTML、ポストスクリプト、WMLなど)の定義に使用します。この機能を使用すると、ドキュメントの出力タイプごとにスタイルシートをまとめることができます。

  • xml属性のみが設定されている場合、指定したXMLドキュメントはデフォルトのメディア・スタイルシートで処理されます。

  • mediaおよびxml属性を設定すると、指定したXMLドキュメントは指定したメディア・タイプを使用して処理されます。

  • stylesheet属性が定義されている場合、XMLドキュメントは指定したスタイルシートで処理されます。

    ノート:

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

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

  • <x:xml>タグを使用すると、XMLドキュメントをインライン処理用に指定できます。このタグには属性はありません。

  • <x:stylesheet>タグは、属性を指定しない場合、デフォルトのスタイルシートをインラインで指定できます。

  • <x:stylesheet>タグのuri属性を使用して、デフォルト・スタイルシートの場所を指定します。

  • 様々なメディア・タイプごとに異なるスタイルシートを指定する場合は、media属性に異なる値を指定して、複数の<x:stylesheet>タグを使用できます。タグの本文でメディア・タイプごとのスタイルシートを指定したり、uri属性を使ってスタイルシートの場所を指定したりできます。

JSPでのXSLT JSPタグの使用例

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

ノート:

この機能はWebLogic Server 12.1.2.0で非推奨となり、将来のリリースでは削除される可能性があります。

最初に、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");
   // default to WML client
   String myMedia = "wml";

   // if client is an HTML browser

   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レジストリ(WebLogic Server管理コンソールで構成)では、次の項目を構成します。

  • デフォルト・トランスフォーマをサーバー全体のトランスフォーマとして使用します。

  • デフォルト・トランスフォーマ以外のトランスフォーマをサーバー全体のトランスフォーマとして使用します。トランスフォーマはJAXP準拠でなくてはなりません。

Xmlレジストリで変換オプションを構成する手順については、「デフォルト以外のパーサーまたはトランスフォーマの構成」を参照してください