ここのところ、インターネットの応用範囲を大きく広げるテクノロジーとして「XML(eXtensible Markup Language)」が注目を集めている。ほんの1年ほど前までは、まだまだ限られた人しか知らないテクノロジーだったが、ここにきて「EC」や「B to B」といったキーワードとともに新聞や雑誌でこの単語を見かける機会が増えてきた。解説記事も多く、どういったテクノロジーであるかをイメージできる読者も多いと思う。
XMLは、簡単にいうと“マークアップ言語を作るための枠組みを定めた規格”となる。有名なマークアップ言語として、インターネットの普及を支えたHTMLが挙げられるが、XMLをベースにした文書もHTMLと同じく“<”と“>”で括られたタグを使い、文書に対して意味付けを行なっていく。ただHTMLの場合はタグの意味をW3Cがキチッと定義しているが、XMLの場合タグそのものまでは規定されていない。ユーザーは、規格上で定められた名前の生成規則やXML文書作成時のルールをベースに、タグの名前などを決めてマークアップ言語を作っていくことになる。
こうしてユーザーがタグを作成できることによるメリットは、さまざまな情報を、マークアップ言語で表わしたデータにできる点だ。スケジュールを表わすことを考えた場合、HTMLでも、たとえば以下の例のように「スケジュールを書いた文書」は表わすことができる。
(省略) <table> <tr> <td>2000年6月29日</td> <td>日刊アスキー Business Centerの打ち合わせ</td> <td>トーシンビル</td> </tr> </table> (省略)
人間であれば、上記の内容で「2000年6月29日」と書かれていればそれは日付だと認識できるが、これをソフトウェアに読み込んで処理させるのは難しい。もちろん決め打ちでデータを認識させるという方法も考えられるが、もし日付と予定のタイトルが入力されている位置が入れ替わっていると、その時点で処理は不可能になってしまう。このスケジュールをXMLで記述すると、たとえば以下のように表現することができる。
<?xml version="1.0" encoding="EUC-JP"?> <スケジュール> <予定> <日時> <年>2000</年> <月>6</月> <日>29</日> </日時> <タイトル>日刊アスキー Business Centerの打ち合わせ</タイトル> <場所>トーシンビル</場所> </予定> </スケジュール>
このようにXMLで記述されていると、ソフトウェアはタグの名前を頼りに、そのタグで挟まれている値は何を表わすのかを判断することができる。たとえば上記のデータをデータベースに格納する、といった動作を考えると、「<場所>タグで括られた値はデータベースの“場所”フィールドに入れる」といった具合だ。このようにXMLでは、タグを作成できることによって、HTMLでは難しかった「ソフトウェアによる処理」を容易に実現することができる。
ただこの結果は当然で、HTMLはあくまでも「文書の構造」を表わすために開発された言語であることを忘れてはならない。つまり、こうしたスケジュールのようなデータを表現するには、HTMLはもともと向いていないのだ。しかしXMLが登場したことにより、今後はこれをベースにさまざまなデータを表現することが可能になったわけだ。
XMLを使うもうひとつの大きなメリットとして、ベンダーやソフトウェアから独立したファイルフォーマットとして利用できる点も挙げられる。たとえば、パソコンでスケジュールを管理しているユーザーは多いと思うが、そのスケジュールソフトで作成したデータは、基本的にそのソフトウェアでしか利用できないことが多い。しかしこれでは、たとえば会社内のスケジュールを入力したデータを配布しようとすると、そのソフトウェアでしか読めず、もしなければそのデータは読めないという不便をユーザーに強いることになる。しかし仮にXML対応のスケジュールソフトがあれば、データフォーマットをXMLにしておくだけで、ソフトウェアを特定せずに、データを配布し、またそれを読むことが可能になる。
これは、XMLが非営利団体であるW3C(World Wide Web Consortium)によって制定されたオープンな規格であり、ベンダーは自由にXMLをサポートしたソフトウェアを作成することができるためだ。このモデルをすでに実現し、大きな成功を収めているのがHTMLである。HTMLはソフトウェアから完全に切り離されたフォーマットであり、基本的にはどのソフトウェアを使って作成したHTMLでも、見る側は好きなブラウザを使ってそのHTML文書を読むことができる。これによって、配布する側はユーザーがどのような環境で読み込まれるかを気にする必要はなく、閲覧する側は好きな環境で読める、と双方にメリットが生まれている。こうしたメリットをHTMLで表わせる「文書」だけでなく、コンピュータ上のさまざまなデータで得られる、というのがXMLなのだ。
XSLTが必要な理由
もちろんこうした利点を最大限に活用するには、ソフトウェアがXMLに対応する必要があるわけだが、もうひとつ壁になるのが、どのようなタグを使うのかという取り決めである。ソフトウェアはタグの名前を頼りにXMLを処理するため、その名前がバラバラでは、いくら「XMLに対応した」と言っても適切にXMLを処理することはできない。たとえば先ほどのスケジュールを表わしたXMLで、「<年月><年><月><日>」というタグがあったが、もしほかのユーザーが使っているXML対応のスケジュールソフトが「<date><year><month><day>」というタグしか認識しないということになると、わざわざテキストエディタやワープロの置換機能を使ってタグの名前を書き換えるなどしなければならない。また、タグの名前を書き換える程度の修正であれば、置換でも何とかなるが、XMLの構造自体が違ってくるとさらにややこしくなる。たとえば下記のXMLは、先ほどのスケジュールを表わしたものとまったく同じデータだが、タグの構造を若干変えている。
<?xml version="1.0" encoding="EUC-JP"?> <schedule> <appoint year="2000" month="6" day="29"> <title>日刊アスキー Business Centerの打ち合わせ</title> <location>トーシンビル</location> </appoint> </schedule>
先ほどのXMLからタグの名前を変更し、さらに「<年月>」というタグの下にある「<年><月><日>」というタグで表わしていた予定日を、今回は「<appoint>」タグの「year」と「month」「day」の3つの属性として表わしている。属性とは、タグに対して何らかの情報を付け加えたい場合に利用できるものだ。HTMLで画像を表示させるために利用する際に「<img src="image.gif">」などと記述するが、この「src="image.gif"」の部分が属性となる。
このようにタグで表わしていたデータを属性に書き換えるとなると、単純な置換では変換することができない。そこで活用するのが「XSLT」というわけだ。
W3Cは、XMLに関連するさまざまな規格の制定を進めているが、XSLTもそうして勧告になった規格のひとつである。もともとXSLTは、XML文書に対してスタイル付けを行なう規格である「XSL」のひとつとして考えられていた。ちなみにXSLは、以下の2つの段階から構成されていた。
- 文書の構造の変換方法を規定した規格
- フォントの情報などのスタイル情報の定義
これにより、まずXML文書を人間が読みやすいようにデータの並び替えなどを行ない(構造の変換)、そうして変換されたデータに対してスタイル情報を定義していく、という流れになる。しかし文書の構造の変換という機能が、単にスタイル付けを行なう際に便利なだけでなく、もっと幅広く利用できることから、XSLからXSLTが分離/独立したわけだ。
XSLTでできることの範囲は幅広く、それゆえになかなか難しい規格になっているが、使いこなせるようになれば、XMLの応用範囲を大きく広げることができる。たとえば「<スケジュール>」から「<schedule>」といったように、タグの名前を変えるといったことは朝飯前で、さらに先ほどの「<年><月><日>」のタグの値を、「<appoint>」要素の属性にする、といったことも可能だ。さらにタグの値などの条件によって動作を変更するif文のような処理を行なったり、あるいは変数や引数が使えるなど、プログラマブルな処理を行なうことができるのも大きな特徴だ。
このXSLTが利用できる範囲は幅広いが、用途としてもっとも分かりやすい例では、HTMLへの変換が挙げられる。HTMLに変換することにより、もっとも頻繁に使われているアプリケーションのひとつになった「Webブラウザ」を使って、XML文書を閲覧することが可能になる。また最近ではパソコンからのブラウズだけでなく、携帯電話などを使ってWebを見ているユーザーも多いと思うが、複数のXSLTを記述しておくことで、パソコンのブラウザの機能をフルに使ったHTMLから、携帯電話用のHTMLまで、1つのソースで複数の用途に使える。
もちろんHTMLに変換するだけでなく、XMLからXMLへの変換にも利用できる。現在、特に電子商取引などといった分野でXMLへの期待が高まっているが、タグの名前や属性、さらには構造といったもの(これをスキーマという。これに関しては、回を改めて詳しく解説する予定だ)が分野や企業団体ごとに統一されるのはもう少し先になるだろうと思われる。このように業界の方向性が定まっていない中では、特定のスキーマに偏るのではなく、XMLを送信、あるいは受け入れる際の柔軟性が重要になる。
このようにXSLTが便利な場面は多く、XMLを活用していくには避けて通れない規格になっている。次回は実際にXSLTを使ったXMLの変換などを解説したい。