Web アプリケーションでの XML の変換

JRun の Xalan XSLT プロセッサで JAXPを使用すると、XML ドキュメントを変換し、それをサーブレットまたは JSPとして出力できます。XML を変換するには、XML 入力ソースと XSL スタイルシートが必要です。XML は、HTML またはその他のマークアップ言語 (WML や SGML など) に変換できます。

XSL スタイルシートの使用

XSL スタイルシートは、XML 要素のコンテンツの書式設定方法をクライアントに指示します。XSL スタイルシートを使用すると、一連の HTML タグを HTML ページとして生成できます。

HTML ページの BODY タグでは、次の XSL スタイルシートのサンプルは、HomePageLinks というラベルの付いたテキストをハイパーリンクに変換し、HTML ページを出力します。

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/
Transform">
<xsl:output method="html"/>
<xsl:template match="/">
<html>
 <HEAD>
  <TITLE>ホームページ</TITLE>
 </HEAD>
 <body>
  <h2>利用可能なリンク</h2><br/>
  <xsl:apply-templates select="HomePageLinks"/>
 </body>
</html>
</xsl:template>
<xsl:template match="A">
 <xsl:element name="A">
  <xsl:attribute name="HREF">
   <xsl:value-of select="@HREF"/>
  </xsl:attribute>
  <xsl:value-of select="."/>
 </xsl:element>
<br/>
</xsl:template>
</xsl:stylesheet>

XSL スタイルシートの使用方法の詳細については、 「リソース」 を参照してください。

JAXP Transformer オブジェクトの使用

JAXP では Transformer オブジェクトが利用可能です。Transformer オブジェクトは、さまざまなソースからの XML 入力を処理し、その変換結果をすべての出力に書き込みます。Transformer オブジェクトを作成するには、TransformerFactory クラスの newTransformer メソッドを使用します。

次のサンプルサーブレットは、前の XSL ファイルのルールに従って XML ソースファイルを取得して変換します。

import javax.servlet.*;
import javax.servlet.http.*;
import javax.xml.transform.*;
import javax.xml.transform.stream.*;
import java.io.*;
import java.net.*;
public class XSLTHomePage extends HttpServlet {
 public void doGet (HttpServletRequest request, HttpServletResponse 
response) throws ServletException, IOException {
  PrintWriter out = response.getWriter();
  try {
   //TransformerFactory クラスを作成します。
   TransformerFactory tFactory = TransformerFactory.newInstance();
   // XML 入力ドキュメントとスタイルシートを取得します。
   ServletContext sc = this.getServletContext();
   URL xslURL = sc.getResource("/homepagelinks.xsl");
   URL xmlURL = sc.getResource("/homepagelinks.xml");
   Source xslSource = new StreamSource(new 
java.net.URL(xslURL.toString()).openStream());
   Source xmlSource = new StreamSource(new 
java.net.URL(xmlURL.toString()).openStream());
   // Transformer オブジェクトを生成します。
   Transformer transformer = tFactory.newTransformer(xslSource);
   // 変換を実行し、レスポンスに出力を送ります。
   transformer.transform(xmlSource, new StreamResult(out));
  } catch (Exception e) {
   out.println(e.getMessage()); 
  }
 }
}

JAXP の使用方法の詳細については、次をご覧ください。

サンプルサーブレットを表示するには、samples JRun サーバを起動し、ブラウザで http://localhost:8200/techniques を開きます。