JRun の Xalan XSLT プロセッサで JAXPを使用すると、XML ドキュメントを変換し、それをサーブレットまたは JSPとして出力できます。XML を変換するには、XML 入力ソースと XSL スタイルシートが必要です。XML は、HTML またはその他のマークアップ言語 (WML や SGML など) に変換できます。
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 オブジェクトが利用可能です。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());
}
}
}
サンプルサーブレットを表示するには、samples JRun サーバを起動し、ブラウザで http://localhost:8200/techniques を開きます。