Javaの道 Javaに関する
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道 > オープンソース > Taglibs −7.Standard Taglibs:XMLタグライブラリ
更新日:2006/6/10
Taglibs−7.Standard Taglibs:XMLタグライブラリ
ここでは、Standard Taglibsで定義されている、XMLタグライブラリについて解説します。XMLタグライブラリでは、XMLドキュメントの解析、変換、出力などXMLドキュメントに関連する処理を行うタグが定義されています。

実行環境
・WindowsXP Home Edition
・J2SDK 1.4.2_04
・Tomcat 5.0.18
・Standard Taglib 1.1.0
XMLタグライブラリの一覧

XMLタグライブラリで定義されているタグを以下に記載します。

タグ
内容
XMLドキュメントを解析する。
XPath式で指定された値を表示する。
XPath式で指定された値を変数に代入する。
属性で指定されるXPath式の評価結果(true、false)に基づき、処理を実行する。
switch文と同様の条件処理を行う。条件処理は<x:when>タグに指定されるXPath式に従い実行される。
属性で指定されるXPath式に基づき、繰返し処理を行う。
XMLドキュメントを指定されたXSLTドキュメントに基づき、変換する。
<x:transform>タグ内で指定し、XSLTドキュメント内で<xsl:param>タグによりパラメータが指定されている場合に使用します。
XMLタグライブラリの使用例
<x:parse>

構文1
<x:parse {doc=”解析されるXMLドキュメント”}
      {var=”変数名” [scope=”スコープ”]|varDom=”DOMオブジェクトの変数名” [scopeDom=”スコープ”]}
      [systemId=”URI”]
      [filter=”フィルタ”]/>

構文2
<x:parse {var=”変数名” [scope=”スコープ”]|varDom=”DOMオブジェクトの変数名” [scopeDom=”スコープ”]}
      [systemId=”URI”]
      [filter=”フィルタ”]>
  解析されるXMLドキュメント
</x:parse>

属性
属性
内容
必須
var
解析したXMLドキュメントを代入する変数を指定する。変数の型は任意の型を使用できる。変数はXPath式の指定の際に使用する。
×
varDom
解析したXMLドキュメントを代入する変数を指定する。変数の型はDOMオブジェクト型になる。変数はXPath式の指定の際に使用する。
×
scope
var属性で指定された変数のスコープを設定する。スコープはpage、request、session、applicationのいずれかを設定できる。デフォルトでは、pageが設定されている。
×
scopeDom
varDom属性で指定された変数のスコープを設定する。スコープはpage、request、session、applicationのいずれかを設定できる。デフォルトでは、pageが設定されている。
×
doc
解析するXMLドキュメントを指定する。
×
systemId
XMLドキュメントを解析するためのURIを指定する。
×
filter
XMLドキュメントを解析する際に適用されるフィルタを指定する。適用されるフィルタによっては解析時間の短縮が見込まれる。
×
サンプルコード:変数xmlTextのXMLドキュメントを解析し、解析結果を変数aに代入しています。
<c:set var="xmlText">
  <a>
    <b>
      <c>
        foo
      </c>
    </b>
    <d>
      bar
    </d>
  </a>
</c:set>

<x:parse var="a" doc="${xmlText}" />
<x:out>

構文1
<x:out select=”XPath式” [escapeXml=”{true|false}”]/>

属性
属性
内容
必須
select
評価されるXPath式を指定する。
escapeXml
出力する値に<、>、&、'、"が含まれていた場合に、該当するコード(&lt;、&gt;、&amp;、&#039;、&#034;)に置き換えて表示するか、そのまま表示するかを指定する。デフォルトでは、置き換えて表示する(true)。
×
サンプルコード:<x:parse>タグの解析結果が代入された変数aの中からXPath式を指定して、該当する値を表示しています。
<c:set var="xmlText">
  <a>
    <b>
      <c>
        foo
      </c>
    </b>
    <d>
      bar
    </d>
  </a>
</c:set>

<x:parse var="a" doc="${xmlText}" />

<x:out select="$a//c" />
<x:out select="$a/a/d" />
<x:set>

構文1
<x:set select=”XPath式”
     var=”変数名”
     [scope=”{page|request|session|application}”]/>

属性
属性
内容
必須
select
評価されるXPath式を指定する。
var
XPath式で指定された値を代入する変数。
scope
var属性で指定された変数のスコープを設定する。スコープはpage、request、session、applicationのいずれかを設定できる。デフォルトでは、pageが設定されている。
×
サンプルコード:<x:set>タグのXPath式で指定された値を、変数dに代入しています。
<x:parse var="a">
  <a>
    <b>
      <c>
        foo
      </c>
    </b>
    <d>
      <e>
        bar
      </e>
    </d>
  </a>
</x:parse>

<x:set var="d" select="$a//d" />
<x:out select="$d/e" />
<x:if>

構文1
<x:if select=”XPath式”
    var=”変数名”
    [scope=”{page|request|session|application}”]/>

構文2
<x:if select=”XPath式”
   [var=”変数名”]
   [scope=”{page|request|session|application}”]>
   判定式がtrueの場合に実行される処理
</x:if>

属性
属性
内容
必須
select
trueかfalseが評価されるXPath式を指定する。
var
XPath式の評価結果が代入される変数を指定する。評価結果はtrueかfalseになる。
×
scope
var属性で指定された変数のスコープを設定する。スコープはpage、request、session、applicationのいずれかを設定できる。デフォルトでは、pageが設定されている。
×
サンプルコード:<x:if>タグのselect属性で指定されたXPath式がtrueである場合に、<x:if>〜</x:if>の間の処理が実行されます。
<x:parse var="a">
  <a>
    <b>
      <c>
        foo
      </c>
    </b>
    <d>
      bar
    </d>
  </a>
</x:parse>

<x:if select="$a//c">
  $a//c exists
</x:if>
<x:choose>、<x:when>、<x:otherwise>

構文1
<x:choose>
   <x:when select=”XPath式”>
     XPath式がtrueの場合に実行される処理
   </x:when>
   ・・・・・・・・・・・・・・・・・・・・・・
   ・・・・・・・・・・・・・・・・・・・・・・
   <x:otherwise>
     どのwhenの判定式もtrueでなかった場合に実行される処理
   </x:otherwise>
</x:choose>

属性
属性
内容
必須
select
when文の処理を実行するかどうかを判定するXPath式を指定する。
サンプルコード: <x:when>タグのselect属性で指定されたXPath式がtrueの場合、該当する<x:when>タグの処理が実行されます。すべてのselect属性がfalseの場合、<x:otherwise>タグの処理が実行されます。
<x:parse var="a">
  <a>
    <b>
      <c foo="bar">
        foo
      </c>
    </b>
    <d>
      bar
    </d>
  </a>
</x:parse>

<x:choose>
  <x:when select='$a//c[@foo="bar"]'>
    @foo = bar
  </x:when>
  <x:when select='$a//c[@foo="foo"]'>
    @foo = foo
  </x:when>
  <x:otherwise>
    @foo not recognized
  </x:otherwise>
</x:choose>
<x:forEach>

構文1
<x:forEach [var=”変数名”]
        select=”XPath式”
        [varStatus=”ステータス変数名”]
        [begin=”開始値”]
        [end=”終了値”]
        [step=”繰返し処理レベル”]>
   繰返し実行される処理
</x:forEach>

属性
属性
内容
必須
var
繰り返し処理される値が代入される変数。
×
select
評価されるXPath式を指定する。
begin
繰返し処理を開始する位置を明示的に指定したい場合に使用する。初めから開始する場合は0になる。
×
end
繰返し処理を終了する位置を明示的に指定したい場合に使用する。
×
step
繰り返し処理の繰り返すレベルを指定する。
×
varStatus
繰り返し処理のステータスが代入される変数。ステータスにはindex(0から始まるループ回数)、count(1から始まるループ回数)、current(カレントのオブジェクト)、first(ループ開始フラグかどうか)、last(ループ終了フラグかどうか)、begin(begin属性で指定された値)、end(end属性で指定された値)、step(step属性で指定された値)があります。
×
サンプルコード:<x:forEach>タグのselect属性で指定されたXPath式に基づき、繰返し処理を行っています。
<x:forEach select="$document//a" varStatus="status">
  ${status.index}: <x:out select="."/>
<x:forEach>
<x:transform>

構文1
<x:transform doc=”XMLドキュメント”
         xslt=”XSLTドキュメント”
         [docSystemId=”XMLドキュメントのURI”]
         [xsltSystemId=”XSLTドキュメントのURI”]
         [{var=”変数名” [scope=”スコープ”]|result=”result変数名”}]/>

構文2
<x:transform doc=”XMLドキュメント”
         xslt=”XSLTドキュメント”
         [docSystemId=”XMLドキュメントのURI”]
         [xsltSystemId=”XSLTドキュメントのURI”]
         [{var=”変数名” [scope=”スコープ”]|result=”result変数名”}]>
   <x:param> actions
</x:transform>

構文3
<x:transform xslt=”XSLTドキュメント”
         [docSystemId=”XMLドキュメントのURI”]
         xsltSystemId=”XSLTドキュメントのURI”
         [{var=”変数名” [scope=”スコープ”]|result=”result変数名”}]>
   変換されるXMLドキュメント
   <x:param> actions
</x:transform>

属性
属性
内容
必須
var
XSLTにより変換されたXMLドキュメントを代入する変数を指定する。変数の型はDOMオブジェクト型になる。
×
scope
var属性で指定された変数のスコープを設定する。スコープはpage、request、session、applicationのいずれかを設定できる。デフォルトでは、pageが設定されている。
×
result
XSLTにより変換されたXMLドキュメントを代入する変数を指定する。変数の型はResult型になる。
×
doc
変換するXMLドキュメントを指定する。
×
docSystemId
XMLドキュメントのURIを指定する。
×
xslt
XSLTドキュメントを指定する。
×
xsltSystemId
XSLTドキュメントのURIを指定する。
×
サンプルコード:<c:set>タグで設定された変数${xml}と変数${xsl}を指定して、XMLドキュメント(${xml})をXSLTドキュメント(${xsl})に基づき変換しています。
<c:set var="xml">
  <a><b>header!</b></a>
</c:set>

<c:set var="xsl">
  <?xml version="1.0"?>
  <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
       version="1.0">

    <xsl:template match="text()">
      <h1><xsl:value-of select="."/></h1>
    </xsl:template>

  </xsl:stylesheet>
</c:set>

Prints "header" as a header:<br />
<x:transform doc="${xml}" xslt="${xsl}"/>
<x:param>

構文1
<x:param name=”パラメータ名” value=”パラメータ値”/>

構文2
<x:param name=”パラメータ名”>
  パラメータ値
</x:param>

属性
属性
内容
必須
name
値を代入するパラメータ名を指定する。
value
パラメータ名に代入する値を指定する。
×



このページのトップへ
 ニュースJava基本Servlet・JSPオープンソースFAQ掲示板
Javaの道_CopyrightJavaの道