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 を開きます。