Jakarta Taglibs JSTL XMLタグライブラリ

 JSTL 1.1のXMLタグライブラリの簡単なサンプル(抜粋)です。

<%@ page language='java' session='true' %>
<%@ page pageEncoding="Shift_JIS" %>
<%@ taglib uri="http://java.sun.com/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jstl/xml"  prefix="x" %>
<%@ taglib prefix="ushi" uri="ushitag" %>
<html lang="ja">
<body>
<p>
<table border="1">
<c:forEach var="index" items="01,02,03,04,05,06,07,08,09,10,11,12,13,14,15">
  <c:set var="file" value="/memodist/tss3/koma${index}.xml" />
  <c:set var="reluri" value="../tss3/koma${index}.xml" />
  <ushi:import var="docString" fileNameVar="file" charEncoding="EucJP" />
  <x:parse var="document" xml="${docString}" systemId="${reluri}" />

  <x:forEach select="$document//document/category/entry">
    <c:set var="qq"><x:out select="qq"/></c:set>
    <c:set var="aa"><x:out select="aa"/></c:set>
    <tr>
      <td bgcolor="#cccccc">
        <a href="<c:out value='${reluri}'/>#<x:out select='id'/>">
        <x:out select="id" />
        </a>
      </td>
      <td><x:out select="qq" /></td>
      <td><x:out select="aa" /></td>
    </tr>
  </x:forEach>
</c:forEach>
</body></html>

JSTLのXMLタグは、Coreタグと併用することが多いです。 順に見ていくと、まずXML文書の解析にx:parseタグを使います。 解析して生成したDOMツリー(Documentオブジェクト)を属性varで指定した名前の変数にセットします。 これは後述のx:outやx:forEachタグの中で、$変数名とXPath式の中で参照できます。
xml属性の値は解析対象のXML文書の文字列です。 上の例ではushi:importとなにやら怪しげなタグを使っていますが、 多いのはc:importタグを使って、別のURI(URL)からXML文書を取り込み、 変数に格納する方法です。但し、拡張子.xmlのファイルに対しサーブレットなどでフィルタするWebサーバの場合は、 HTMLに変換された結果がインポートされてしまったりするので、 URIが載るWebサーバの特性を知っていなければ思わぬ内容になったりするので注意が必要です。
そしてsystemId属性ですが、これはオプションで、読んだ文書があるURIを指定します。 これが必要なのは、XML文書の中で文書型定義(DTD)を相対URIで参照している場合などで、 それらの相対URIの起点となる場所を指定しています。

c:forEachと同じように、XMLの特定要素に出会う度にループする処理は、 x:forEachタグで行います。 但しselect=の内容は、EL式ではなくXPath式です。 このXPath式の中では$変数名、としてPageコンテキストのJSP変数の内容を参照することができます。 c:outと同じようにJSPストリームにXMLの要素の値を出力するには、 x:outタグを使います。 XMLの要素の値を、JSP変数にセットするには、上の例にあるように、 c:setタグでx:outタグの出力を囲みます。

Server Side Java Index Top

(first uploaded 2003/12/06 last updated 2003/12/06, URANO398)

Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!