矢沢 久雄
前回の講座では,XMLパーサーとDOMによって,簡単な手続きでXML文書にアクセスできることを説明しました。しかし,プログラムを記述しなければXML文書を意味のあるレイアウトで表示できないとしたら,だれでもXML文書を利用できるとは言えませんね。今回説明するスタイルシートを使えば,プログラムを記述することなくXML文書をレイアウトしてWebページに表示できます。
●XMLのスタイルシート
XML文書は,データだけが記述されたものです。XML文書をInternet Explorer 5.xなどのWebブラウザに読み込むと,その内容がそのまま表示されます。XML文書は,HTML文書のような文書の書式情報(レイアウト情報)を持っていないのですから,これは当然のことです。XMLパーサーとDOMを使ってXML文書を解析し,それを任意にレイアウトしてからWebページに書き込むこともできますが,そのためには多少なりともプログラムの記述が必要になります。
図1●スタイルシートを使えばXML文書をレイアウトして表示できる |
●CSS(Cascading Style Sheet)
CSSは,もともとHTML文書のレイアウトを設定するために考案されたものです。HTML文書では,様々な種類のタグや,タグの属性を設定することで,Webページのレイアウトが設定できるようになっていますが,レイアウトに凝るとタグの内容が複雑なものになってしまうという問題がありました。CSSは,HTML文書本体とレイアウト情報を分離させることで,この問題を解決するものです。図2●リスト1+リスト2によって表示されたWebページ |
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が誕生した |
●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ページ |
インターネットの世界でXML文書を配信する際には,どの技術をどのように使えばよいのでしょうか? 現状では,2種類の選択肢があります。一つは,WebサーバーにXML文書とスタイルシート(CSSまたはXSLT)を配置し,それらをXML対応のWebブラウザに配信する方法です。もう一つは,Webサーバー側でXSLTプロセッサによってXML文書をHTML文書に変換してから,Webブラウザに配信する方法です。勧告前のドラフト段階の仕様があることからもお分かりのとおり,XMLはまだまだ発展途上にある技術なのです。XMLに対応していないWebブラウザも数多く使われています。したがって,後者の方法が現状では無難な選択と言えるでしょう。
次回(最終回)は,XMLをベースとした様々なテクノロジの中で,特に注目すべきものをピックアップして紹介します。お楽しみに!