前回(第5回)はサンプル・ファイルに含まれているstyle1.xslを例にしてXSLTスタイルシートを解説した。今回は引き続きstyle2.xslを取り上げよう。style2.xslの全体的な構成はstyle1.xslと同じなので,style1.xslと異なっている点にフォーカスして解説する。
■ サンプルのstyle2.xsl
図1 サンプル・ファイルのstyle2.xsl [画像のクリックで拡大表示] |
<img border="0" src="<xsl:value-of select='itms:coverArt[3]'/>"/>
XSLTではこのような記述はできない(もちろん,この記述はXMLの文法にも違反している)ため,この場合は「{ }」を用いた記述にする。
図2 アップルコンピュータが提供していRSSデータ [画像のクリックで拡大表示] |
したがって,例えば3番目のcoverArt要素の文字列値が「http://a1.phobos.apple.com/XXXX.jpg」だった場合,図1(1)の変換結果は以下のようになる。
<img border="0" src="http://a1.phobos.apple.com/XXXX.jpg"/>
属性値テンプレートでは「{ }」の記述でXPath式を使用することができるが,もしも「{」や「}」を属性値文字列として記したい場合は,「{」や「}」を2重に記述することでエスケープできる。例えばXSLTスタイルシートで以下のように記述したとしよう。
<input type="text" name="comment" onchange="{{thanks()}}"/>
この場合のXSLT変換結果は以下のようになる。
<input type="text" name="comment" onchange="{thanks()}"/>
図3 style2.xslによるXSLT変換結果 [画像のクリックで拡大表示] |
以上より,サンプル・ファイルのstyle2.xslを用いたXSLT変換結果は図3のようになる(途中2~9番目の処理結果は省略している)。
■ XSLT変換結果を確認する
リスト XSLT変換を行うtransform.htmファイルのソース ソースのダウンロード [画像のクリックで拡大表示] |
図4 Internet Explorerによるtransform.htmファイルの表示 [画像のクリックで拡大表示] |
図5 transform.htmファイルの実行例 [画像のクリックで拡大表示] |
このtransform.htmをInternet Explorerで開いて実行すると,図4のような表示になる。実行時にページ上部の「情報バー」にメッセージが表示された場合は,そこをクリックして「ブロックされているコンテンツを許可」していただきたい。この状態で,「XMLファイル」入力欄にアップルコンピュータのトップテンソングデータのURLを入力し,「XSLTスタイルシート」入力欄でサンプル・ファイルの「style2.xsl」を指定し,「変換実行」ボタンをクリックすると,テキスト・エリアに変換結果が表示される(図5)。
これまで,サンプルを交えてXML,名前空間,XSLT変換などを解説してきた。入門として押さえて欲しい基本的な内容で構成してきたが,XMLおよびその関連技術には,ここで触れていない機能や文法がまだまだ多くある。XMLをうまく活用できると,かなり自由度の高いデータ操作ができるようになる。インターネット上では,BtoBなどのビジネス用途でXMLデータが交換されている例は多いが,最近はもっと身近なところでもXMLが使用されている。もしも興味のある部分でXMLが使用されていれば,そのXMLデータを自分なりに応用してみることを考えてみるのもよいだろう。自分で工夫して動かした結果は,それだけ自分の技術になるはずだ。
木村 達哉 インフォテリア 教育部 インフォテリア認定教育センターの運営や,XML技術者認定制度のXMLマスターに対応したコーステキストの開発などに携わる。XMLは,何となく知っているようでもそれを正しく扱うためにはなかなか奥が深いもの。そんなXMLへの入口を紹介します。 |