XSLファイルを作成しよう

 では,XSLファイルを作成していきましょう.XSLファイルも,メモ帳などのテキストエディタで書きます.一見複雑そうに見えるため,とっつき難い印象があるのですが,コツさえつかめば簡単です!

<リスト3> XSLファイル(text.xsl)

<?xml version="1.0" encoding="Shift_JIS"?>

<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"

<xsl:template match="/">

 <html>

 <head><title>XMLの練習</title></head>

 <body><xsl:apply-templates select="全体" /></body>

 </html>

</xsl:template>

 <xsl:template match="全体">

  <h1><xsl:value-of select="題名" /></h1

 </xsl:template>

</xsl:stylesheet>

 


 リスト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ファイルに何を書くのか?
 XML文書のソースのツリーを,Webページの形で表示するという結果に変えたいわけですから,ソースのツリーを結果のツリーに変換しなければなりません.その変換の決まりを,XSLファイルに書くわけです.そうすると,味もそっけもないXML文書が,XSLファイル中に書かれた決まりに従って表示されるようになります.

 Web制作者は,この決まりを自由に定めることができます.つまり,XSLファイルのコードは,ソースのツリーを,どのような結果に変換するかというテンプレートの決まりの集合なのです.

 ここでは,Webページの形の表示結果に変換する,決まりの記述方法を見ていきます.

2)決まりを定める手順
 1個のテンプレートの決まりを指定するには,2つの手順を踏む必要があります.

 まず「どの要素に対して決まりを定めるのか」を指定し,次に「どのように変換するか」を定義します.

 「どの要素に対して決まりを定めるのか」を指定するには,xsl:template要素を使って,<xsl:template match="ノード"></xsl:template>と書きます.「ノード」は,木構造の枝が出ている部分,「節」のことで(図6),通常は「要素名」です.たとえば,「全体」という要素の内容に対してテンプレートを定義したい場合,<xsl:template match="全体"></xsl:template>のように書きます.ただし,「要素名」を書く以外にも,ノードの指定方法には,いろいろなパターンがあります.たとえば,階層を明記して要素名を記述するパターンや,複数のノードを指定するパターン,ノードの組み合わせを指定するパターン等もあります.注:7

<図6>ノードは節

(約4Kバイト)

 「どの要素に対して決まりを定めるのか」を記述できたら,次に,「どのように変換するか」というテンプレートを,<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文書を開いてみてください.

 

<図7>XSLファイルで変換したXML文書の表示

(約6Kバイト)


注: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.