2006年05月07日(日)更新 |
■変換するXMLデータ(例)
たけち: 今回は具体例で変換の様子を詳しく見てみようね。前回のXMLデータをもう一度見てみよう。ツリーチャートもね。 さらら: は〜い。 |
※XMLデータ例: 万葉歌の例 【manyo.xml】 <?xml version="1.0" encoding="Shift_JIS"?> |
たけち: じゃあ、このXMLデータの中の、yomi要素の内容、つまり さらら: 歌の読みだけを取り出すのね。 たけち: そうだね。この場合の変換対象は、どのノードになるかな。 さらら: えっ、と。。。この部分ね。 |
![]() |
■変換後のHTMLを考える
たけち: そうだね。で、結果として生成したいHTMLを考えてみよう。 さらら: あっ、簡単なのにしてね。(^ ^* たけち: あっ、もちろんだよ。。。。こんな風にしてみようかな。 |
※変換後のHTML
<html> |
さらら: あっ、これなら簡単なHTMLだからわかるわ。もとのXMLデータから、poem要素の内容をHTMLのp要素の内容に変換するわけなのね。 たけち: そうそう。この変換を次の図で確認してみようね。 |
さらら: XMLデータと変換後のHTMLとの関係はわかったわ。で、。。。。。(^ ^; たけち: うん。で、この変換を指示するのがXSLTスタイルシートのテンプレート(template)、っていうことなんだね。ちなみに、templateは、ひな型という意味だね。 さらら: そっか。。。このテンプレートをどう書くのか、ということなのね。 たけち: そうなんだね。それから、変換前のXMLデータのツリー構造をソースツリー、そして変換後のデータのツリー構造を結果ツリーって言ったりするから、覚えておいてね。 さらら: あっ、はい。 |
■XSLTスタイルシートの例とテンプレート
※XSLTスタイルシート例
<?xml version="1.0" encoding="Shift_JIS"?> |
たけち: このXSLTスタイルシートにはテンプレート(template)が二つあるんだ。どれかわかるかな。 さらら: え〜っと。。。 たけち: そうだね。で、最初の さらら: あっ、そうなの。 たけち: match="/"がルートノードに対するテンプレートだということを示しているんだ。"/"がルートノードを示しているって事を説明したよね。 |
![]() |
■<xsl:value-of select="yomi" />
さらら: あっ、じゃあ たけち: そうなんだ。で、そのテンプレートには、 さらら: そういうことなんだぁ〜。それで、歌の内容(文字列)が。。。。あれ? でも、この二つのテンプレートって、どう働くの? それに、歌は二つなのにテンプレートはひとつでしょ??? |
![]() |
■XSLTプロセッサの処理の流れ
たけち: じゃあ、まず、XSLTプロセッサの処理の流れを説明しておくね。基本的には次のようになっているんだ。 |
(1) ソースXMLツリー中の各ノードに対して適用できるテンプレートを選択する。 |
さらら: う〜ん。。なんか、わかんない!! たけち: うん。この例でみてみようね。まず、 さらら: あっ、あるわ!! たけち: で、ルートノードに対するテンプレートによって
というHTMLが生成されるんだね。 |
■<xsl:apply-templates />
さらら: なるほど。。。でも、 たけち: うん。これは、この個所にさらに子ノードに一致するテンプレートによる変換結果をここに入れてくださいということなんだ。 さらら: へぇ。 たけち: で、XSLTプロセッサは、 |
さらら: あっ、そっか。ソースXMLデータには、poem要素がふたつあるから、それぞれが見つかる都度、ノードpoemに対するテンプレートが適用されるのね。 たけち: そうなんだね。だから、ふたつの歌(ノードpoemの子ノードyomiの内容)がHTMLのノードpの内容に変換されるんだね。 さらら: わかったわ!! たけち: よかった。じゃあ、今回はこれでおしまい。次からは色々なテンプレートを作りながら学んでいこうね。。 さらら: あっ、は〜い。 →次回につづきます。 (^ ^)v |
![]() |