連載
» 2005年03月23日 10時00分 UPDATE

JavaTips 〜JSP/サーブレット編:モバイルにも対応したページを実現するには(JSTL編)

[山田祥寛,@IT]

 「モバイルにも対応したページを実現するには」では、Transformerオブジェクトを利用したXSLT変換の方法について紹介しました。しかし、XSLTスタイルシートによる変換は定型的で、処理をいちいちコーディングしなければならない点が不便です。

 しかし、下記のコードのように、JSTL(JSP Standard TagLibrary)に含まれるXmlタグライブラリを利用することで、同等の操作を実現できます(JSTLのインストール方法については、「個別のJSPページでJSTL宣言を省略する」を参照)。

xslt.jsp
<%@ page contentType="text/html;charset=Windows-31J" %>
<%@ taglib prefix="c"  uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="x"  uri="http://java.sun.com/jsp/jstl/xml" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>
<c:import var="xml" url="/WEB-INF/data/music.xml" charEncoding="Windows-31J" />
<%--User-Agentヘッダに"DoCoMo"という文字が含まれるかどうか--%>
<c:choose>
  <c:when test="${fn:contains(header['User-Agent'],'DoCoMo')}">
    <c:import var="xsl" url="/WEB-INF/data/mobile.xsl"
      charEncoding="Windows-31J" />
  </c:when>
  <c:otherwise>
    <c:import var="xsl" url="/WEB-INF/data/pc.xsl"
      charEncoding="Windows-31J" />
  </c:otherwise>
</c:choose>
<%--XSLTスタイルシートでXML文書を変換--%>
<x:transform xml="${xml}" xslt="${xsl}" />


 なお、サンプルを動作させるに際しては、「モバイルにも対応したページを実現するには」と同様に、必要なファイルを所定のフォルダに配置しておくのを忘れないようにしてください。

 ちなみに、XML文書/XSLTスタイルシートをファイル・パスで指定する以外に、システム識別子(docSystemId、xsltSystemId属性)や文字列(XML文書のみ、配下のテキスト)としても指定できます。また、本TIPSのサンプルでは変換結果をそのままクライアントに出力していますが、var、result属性を指定することで任意の変数に格納することも可能です。var属性で指定された場合には、変換結果を文字列として、result属性は変換結果をjavax.xml.transform.Resultオブジェクトとして取得します。

Copyright© 2017 ITmedia, Inc. All Rights Reserved.

@IT Special

- PR -

TechTargetジャパン

この記事に関連するホワイトペーパー

Focus

- PR -

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。