XSLTをつかってXMLを変換するサンプルを、前回ご紹介しました。

XSLTのように見た目を制御するしくみをスタイルシートといいます。スタイルシートと聞くと、多くの人はHTMLの見た目を設定するCSSを思い浮かべると思います。

実はXMLでもCSSを使うことは出来ます。しかし、XSLTとCSSの行っていることは結構違います。整理しておきましょう。

スタイルシート

Wikipediaには以下のようにあります。

構造化文書などにおける表示形式を制御するしくみ。

出典:Wikipedia

構造化文書というのは、XMLやHTMLなどのことです。XMLやHTMLの見た目を決めるしくみのことをスタイルシートと呼んでいます。

スタイルシートを使用する事で、「情報」と「見た目」を別々に管理することが出来るようになり、そのようなデータの作成が理想的です。

つまり、HTMLやXMLに「情報」を記述しておき、スタイルシートに「見た目」を定義する内容を記述しておく、というデータのつくりかたです。

そのようにつくられたデータであれば、スタイルシートを変えるだけで、同じ情報を違う見た目で表現することが出来ます。逆に、スタイルシートはそのままに、読み込むデータを変えれば同じ見た目で異なる情報を表現する事も出来ます。

また、情報を変更するときはXMLだけ変更すればよく、見た目を変更するときはスタイルシートだけを変更すればよくなるため、保守管理もしやすくなるメリットもあります。

CSSとXSLT

CSSもXSLTもこのスタイルシートの1種ということになります。CSSとXSLTもWikipediaを見てみましょう。

Cascading Style Sheets(CSS、カスケーディング・スタイル・シート、カスケード・スタイル・シート)とは、HTML や XML の要素をどのように修飾(表示)するかを指示する、W3Cによる仕様の一つ。文書の構造と体裁を分離させるという理念を実現する為に提唱されたスタイルシートの、具体的な仕様の一つ。

出典:Wikipedia

まずCSSは、HTMLとXMLどちらにも使用出来ます。

要素をどの様に見せるかを決められます。例えば、赤い文字青い文字などの様に書式を変えたり、 枠線 背景 の設定等、様々なレイアウト情報を要素に対して決められます。

おそらくほとんどのWebページで何かしらのCSSを利用してデザインしていると思います。Wikipediaのスタイルシートのページにもありましたが、単に「スタイルシート」というとこのCSSを指すことがあるくらい一般的です。

要素の出現順を変えたり、同じ要素を複数表示したり、削除したり、元の文書の構造そのものを変更するものではありません。

CSSはあくまでそこにあるデータ(情報)をどの様に表示させるかを定めるスタイルシートです。

XSL Transformations(XSLT、XSL変換)は、W3Cにより標準化されたXML文書の変換用言語である。

(略)

XSLTはXML形式の文書を変換する。XPath による選択と検索にもとづき、XML文書全体または文書の一部に対して変換を行い、別の XML 文書または表示・印刷用形式(XSL-FO、HTML、RTF、TeX 文書など)の文書を生成することができる。

出典:Wikipedia

一方XSLTは、XMLの変換言語であり、HTMLに適応しません

XSLTの機能はXMLを別のデータに変換する事です。XML内のすべての要素、又は一部の要素の情報を自由に組み合わせて、HTMLやCSVなど別のテキストベースのファイル形式としてアウトプット出来ます。

つまりCSSで行えない、元の文書の構造そのものを変換することが出来る訳です。

XSLTは、XMLを読み込み、必要な部分を必要な回数利用しながら、任意の形式で出力することが出来るスタイルシートです。

XMLにおけるスタイルシートの利用

XMLでスタイルシートを利用する際、XSLTとCSSを2段階で利用することが多いです。
まずXSLTをつかってXMLをHTMLに変換、そのHTMLに対してCSSを設定して見た目を決めるといった具合です。

XMLにおけるスタイルシートの利用例

まとめ

CSSは要素の見た目を決める仕様
XSLTはXMLの構造を変換出来る仕様
両者はスタイルシートの1種