では,XSLファイルを作成していきましょう.XSLファイルも,メモ帳などのテキストエディタで書きます.一見複雑そうに見えるため,とっつき難い印象があるのですが,コツさえつかめば簡単です!
リスト3の<?xml version="1.0" encoding="Shift_JIS"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"></xsl:stylesheet>は,XSLファイルを記述する上での決まりごとですので,大文字,小文字を間違えないように,このまま書いてください.保存しておいて,XSLファイル作成時に呼び出して使うと便利です.この3行が何なのか,知らなくてもXSLファイルは作れますが,ちょっと見てみましょう. (1)XMLの宣言を書く XSLファイルの1行目には,XML文書と同様,XMLの宣言を書きます. (2)文字コードを指定する 文字コードは,XML文書と統一する必要があります.XML文書とXSLファイルの文字コードが異なると,ブラウザのバージョンによっては正しく表示されません。 (3)XSLのルート要素を書く XSLファイル中には,必ず一組の<xsl:stylesheet></xsl:stylesheet>を書いておきます.注:5 (4)名前空間を指定する xmlns:xsl="URL"で,xslの名前空間を明記しています.xsl:は名前空間の接頭辞,URLは,http://www.w3.org/TR/WD-xslです.注:6 決まりごとを書いたら,さっそくXSLファイルを完成させていきましょう. XSLファイルのコードを記述するには,手順があります.その手順さえ理解すれば,記述は簡単です. 1)XSLファイルに何を書くのか? Web制作者は,この決まりを自由に定めることができます.つまり,XSLファイルのコードは,ソースのツリーを,どのような結果に変換するかというテンプレートの決まりの集合なのです. ここでは,Webページの形の表示結果に変換する,決まりの記述方法を見ていきます. 2)決まりを定める手順 まず「どの要素に対して決まりを定めるのか」を指定し,次に「どのように変換するか」を定義します. 「どの要素に対して決まりを定めるのか」を指定するには,xsl:template要素を使って,<xsl:template match="ノード"></xsl:template>と書きます.「ノード」は,木構造の枝が出ている部分,「節」のことで(図6),通常は「要素名」です.たとえば,「全体」という要素の内容に対してテンプレートを定義したい場合,<xsl:template match="全体"></xsl:template>のように書きます.ただし,「要素名」を書く以外にも,ノードの指定方法には,いろいろなパターンがあります.たとえば,階層を明記して要素名を記述するパターンや,複数のノードを指定するパターン,ノードの組み合わせを指定するパターン等もあります.注:7
「どの要素に対して決まりを定めるのか」を記述できたら,次に,「どのように変換するか」というテンプレートを,<xsl:template match="ノード"></xsl:template>の中に書きます.Webページの形の表示結果に変換したいわけですから,テンプレートは,変換して表示したい内容を取り出すコードを,HTMLのタグで挟んで定義するという方法で書いていきます 内容を取り出すコード,たとえば<xsl:value-of select="ノード">等については,「基本編」で順次解説します.注:8 では,この手順に従って, テンプレートの決まりを記述していきましょう. ルートのテンプレートの決まりを指定する (5)ルートを指定する テンプレートの決まりを記述するときは,必ず,ルートノードを指定します.そして,入れ子の外側から内側へと,順番に記述していきます.まず,<xsl:template match="/"></xsl:template>のように書き,ルートを指定します.「/(スラッシュ)」は,ルートのことです.これで,「ルートノードに対して決まりを定める」準備ができました. (6)HTMLのタグを使って表示結果を定める HTMLの<title>タグを使って,ブラウザのタイトルバーにタイトル「XMLの練習」を表示させます.
(7)ルートのテンプレートを定義する 文書本体<body></body>には,「全体」ノードに対して定義するテンプレートを適用させるため,xsl:apply-templatesのselect属性で,「全体」を指定しています.<xsl:apply-templates select="全体" />は,<xsl:apply-templates select="全体"></xsl:apply-templates>と書いても同じです.最後に/(スラッシュ)を付けるのは省略形です. 「全体」のテンプレートの決まりを指定する (8)「全体」ノードを指定する <xsl:template match="全体"></xsl:template>と書くと,「全体」の決まりを定めることができます. (9)「全体」のテンプレートを定義する 要素「全体」の中には,要素「題名」があります.今度は「題名」の内容を表示させる決まりを定めていきます.<xsl:value-of select="題名" />と書いて,「題名」の内容を取り出します.ここでは<h1></h1>で挟み,重要度の高い見出しのように表示させるというテンプレートの決まりを定めています. 以上で,XSLファイルの完成です. XSLファイル名(ここでは,test.xsl)を付けて保存します.注:9 これで,XML文書に関連付けたXSLファイル中に書いた変換の決まりが適用され,Webページの形で表示されるようになります(図7).ブラウザでXML文書を開いてみてください.
注:5 XSLファイルにも,ルート要素があります.xsl:stylesheetは,XSLファイルにおけるルート要素です. 注:6 名前空間は,要素名の重複を防ぐための方法です.XMLのWebページでは,制作者が自由にタグを設定できるため,複数のタグのセットを持つXML文書を,ひとつのXSLファイルに関連付けると,要素名が重複してしまう恐れがあります.名前空間(ネームスペース)を指定し,各要素に名前空間の接頭辞(プレフィックス)を付けることによって,混乱を回避します.XSLの要素なら,xsl:という接頭辞を付けます. 注:7 主なパターンについてはP.133を参照して下さい.(ただし、このWebには載っていません) 注:8 ノードには,要素ノード,テキストノード,属性ノード,名前空間ノード,1個のルートノードがあります.ルートノードの値は文書要素の値で,あらゆる要素には,要素ノードがあります.また,要素ノードは,属性ノードとセットになっていることがあります.テキストノードの値は,文字データです. Copyright 2000 PROJECT kySS 薬師寺 国安 薬師寺 聖 |
|
Copyright 1997-2001 CQ Publishing Co.,Ltd.