矢沢 久雄

 前回の講座では,XMLパーサーとDOMによって,簡単な手続きでXML文書にアクセスできることを説明しました。しかし,プログラムを記述しなければXML文書を意味のあるレイアウトで表示できないとしたら,だれでもXML文書を利用できるとは言えませんね。今回説明するスタイルシートを使えば,プログラムを記述することなくXML文書をレイアウトしてWebページに表示できます。

●XMLのスタイルシート

 XML文書は,データだけが記述されたものです。XML文書をInternet Explorer 5.xなどのWebブラウザに読み込むと,その内容がそのまま表示されます。XML文書は,HTML文書のような文書の書式情報(レイアウト情報)を持っていないのですから,これは当然のことです。XMLパーサーとDOMを使ってXML文書を解析し,それを任意にレイアウトしてからWebページに書き込むこともできますが,そのためには多少なりともプログラムの記述が必要になります。

図1●スタイルシートを使えばXML文書をレイアウトして表示できる
 XMLでは,XML文書をHTML文書のようにレイアウトした状態で表示するための書式情報を別ファイルとして追加できるようになっています。このようなファイルのことを「スタイルシート」と呼びます。スタイルシートもテキスト・ファイルです。XMLで使えるスタイルシートの種類には,CSS(Cascading Style Sheet),XSL(eXtensible Stylesheet Language),およびXSLT(XSL Transformation)があります。これらは,すべてW3C勧告となっているものです(図1[拡大表示])。

●CSS(Cascading Style Sheet)

 CSSは,もともとHTML文書のレイアウトを設定するために考案されたものです。HTML文書では,様々な種類のタグや,タグの属性を設定することで,Webページのレイアウトが設定できるようになっていますが,レイアウトに凝るとタグの内容が複雑なものになってしまうという問題がありました。CSSは,HTML文書本体とレイアウト情報を分離させることで,この問題を解決するものです。

図2●リスト1+リスト2によって表示されたWebページ
 リスト1(MyFile8.htm)は「MyFile9.css」というファイル名のCSSを使うHTML文書です。CSSのファイル名の拡張子は「.css」にします。HTML文書では,<LINK>というタブの属性として,CSSのファイル名などを指定します。リスト2は「MyFile9.css」の内容です。H1というタブの属性に「color:red(赤色)」を設定し,H2というタブの属性に「color:blue(青色)」を設定しています。WebブラウザにHTML文書を読み込むと,CSSの内容が参照され,それが表示に反映されます(図2[拡大表示])。

 XMLでも,HTMLと同様のCSSを使って,レイアウトされた文書をWebブラウザに表示できます。ただし,XMLにはXML専用のスタイルシートがあります。

●XSL(eXtensible Stylesheet Language)

 CSSが,もともとHTML文書のために考案されたスタイルシートであるのに対し,XSLは,XML文書のために考案されたスタイルシートです。CSSでは,XML文書のデータ構造を変換することはできませんが,XSLなら可能となっています。XSLでは,XML文書のツリー構造をいったん別のツリー構造に変換し,その際にレイアウトに関する書式情報を付加できるようになっているからです。

図3●XSLの仕様を2つに分けることでXSLTとXSL-FOが誕生した
 ただし,XSLの仕様は複雑であり,だれでも簡単に使えるものではありません。そこでXSLの仕様を,XSLT(XSL Tarnsformations)とXSL-FO(XSL Formatting Object)の2つに分けるることになりました。XSLTは,XML文書の文書構造を変換する仕様です。XSL-FOは,XML文書の書式設定に関する仕様です。どちらもW3Cによって考案されたものですが,XSL-FOの仕様は,まだ勧告とはなっていません(図3[拡大表示])。

●XSLT(XSL Transformation)

 XSLTは,XML文書を他の形式に変換するための仕様です。XSLTを使えば,XMLパーサとDOMを使ってプログラミングを行うことなく,XML文書を他のXML文書やHTML文書,もしくはテキストファイルなどに変換できます。これによって,XML文書をWebブラウザで適切にレイアウトして表示することも可能となります。文書変換が目的のXSLTですが,変換の際にレイアウト情報を付加できるからです。XSLTで文書変換を行うプログラムをXSLTプロセッサと呼びます。Internet Explorer 5.xは,XSLTプロセッサを内蔵しています(XSLT勧告に対応したXSLTプロセッサは,MSXML3.0が搭載しています。それ以前のマイクロソフトのXSLTプロセッサは,XSLTのドラフト段階に対応したものなので,仕様に若干の違いがあります)。

図4●リスト3+リスト4によって表示されたWebページ
 リスト3(MyFile10.htm)は,「MyFile11.xsl」というファイル名のXSLTを使うXML文書です。XSLTのファイル名の拡張子は,「.xsl」にします。<?xml-stylesheet type="text/xsl" href="MyFile11.xsl"?>の部分が,MyFile11.xslというXSLTを使うことを示しています。リスト4は,「MyFile11.xsl」の内容です。これは,XML文書を,表形式でデータを表示するHTML文書に変換するものです。ここではXSLTの記述方法を詳しく説明しません。何となくXSLTのイメージをつかんでいただければOKです(補足ですが,all-data/companyのように / で区切ってXML文書の階層を示す手法をXPathと呼ぶことを覚えておいてください)。WebブラウザにXML文書を読み込むと,XSLTの内容に基づいてHTML文書に変換され,その結果が表示されます(図4[拡大表示])。

 インターネットの世界でXML文書を配信する際には,どの技術をどのように使えばよいのでしょうか? 現状では,2種類の選択肢があります。一つは,WebサーバーにXML文書とスタイルシート(CSSまたはXSLT)を配置し,それらをXML対応のWebブラウザに配信する方法です。もう一つは,Webサーバー側でXSLTプロセッサによってXML文書をHTML文書に変換してから,Webブラウザに配信する方法です。勧告前のドラフト段階の仕様があることからもお分かりのとおり,XMLはまだまだ発展途上にある技術なのです。XMLに対応していないWebブラウザも数多く使われています。したがって,後者の方法が現状では無難な選択と言えるでしょう。

 次回(最終回)は,XMLをベースとした様々なテクノロジの中で,特に注目すべきものをピックアップして紹介します。お楽しみに!