Javaに関する様々な情報をご紹介します。

7Standard Taglibs:XMLタグライブラリ

Javaに関する様々な情報をご紹介します。

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タグライブラリで定義されているタグを以下に記載します。

タグ 内容
<x:parse> XMLドキュメントを解析する。
<x:out> XPath式で指定された値を表示する。
<x:set> XPath式で指定された値を変数に代入する。
<x:if> 属性で指定されるXPath式の評価結果(true、false)に基づき、処理を実行する。
<x:choose>
<x:when>
<x:otherwise>
switch文と同様の条件処理を行う。条件処理は<x:when>タグに指定されるXPath式に従い実行される。
<x:forEach> 属性で指定されるXPath式に基づき、繰返し処理を行う。
<x:transform> XMLドキュメントを指定されたXSLTドキュメントに基づき、変換する。
<x:param> <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 出力する値に<、>、&、'、"が含まれていた場合に、該当するコード(<、>、&、'、")に置き換えて表示するか、そのまま表示するかを指定する。デフォルトでは、置き換えて表示する(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 パラメータ名に代入する値を指定する。 ×

7Standard Taglibs:XMLタグライブラリ