xsl:element(その2)

今週は、xsl:elementを用いた実践編です。
xsl:element の基本的な使い方は、先週紹介してしまったので、「マニア」な使い方を紹介します。

「マニア」な使い方

先週は、<xsl:element name="○○"> と記述すると、<○○> というタグを作ることができると説明しました。
この○○の部分を動的に変更する方法は、意外と教科書レベルでは説明してくれません。
今週は、この○○を動的に変更する実例を紹介します。

ソースのダウンロード

JSP-XML-2007-11-05.zipをダウンロードしてください。
いつものように、Maven2 でビルドして、Tomcatにデプロイして、http://localhost:8080/JSP-XML/を開きます。
トップページのドロップダウンリストに追加されている「element(タグ作成)」を選んで、「JSTL Xタグで変換」または
「XSLT で変換」のボタンを押してください。

結果は、JSTL Xタグでも、XSLTでも、下図のように表示されます。
変換元になった XML文書に、「名称」「個数/パック」「価格/パック」の見出し文字列が含まれています。
この見出し文字列は、<th> タグで表示します。
2行目以降の、文字列は、<td> タグで表示します。

タグ名を指定しています。JSTL:X タグも、XSLT変換も この<type>タグを見て、表示を変更しています。

JSTL:Xタグのポイント

ポイントになるソースは、当然ながら/jsp/jstl/element.jspです。
以下に、element.jspのポイントを記述します。

なんというか、チカラ技ですね。説明の必要はないでしょう。

XSLのポイント

次に、XSLTでの記述です。ポイントになるソースは、/jsp/xslt/xsl/element.xslです。
以下に、element.xsl のポイントを記述します。

キーポイントは、<xsl:element name="{$type}"> という記述にある {$変数名} の表現です。
name属性の値を、{ } で囲むと、中身に変数を使うことができます。
たった、これだけの事なのですが、管理者はこの手法に気づくまで、丸1日かかりました。

まとめ

本格的に XSLT を使っていくと、どこかでぶつかる壁の1つが、この xsl:elementです。
今回の情報で、壁の1つが取り去れると良いですね。