XMLの概要 |
|
XML(Extensible Markup Language)という言葉を目にする機会が増えてきましたが、一体XMLというのが何物か、何の役に立つのか、どうもよく分からないという方も多いと思います。そこで、とりあえずXMLの雰囲気を知りたいという方向けに、ごくおおまかなXMLの説明をまとめてみました。 XMLとは何か現在インターネットでは主にHTMLが利用されています。HTMLは、ワープロやDTPの文書のようにシステムに依存せず、異なる環境でも表示、やり取りできるため、爆発的に広がりました。しかし、HTMLは高度な文書を念頭に置いて開発されたものではないので、表現に限界があります。大規模な文書の管理(たとえば文書のバージョン管理やリンク管理)にも不向きです。またオンラインショップのように、データを検索したり保存したり、他のシステムとやり取りする場合、項目もデータもすべてごちゃまぜで書かれたようなHTML文書は扱いにくく、メンテナンスも大変です。 そこで考案されたのがXMLです。XMLはまったく新たに開発されたものでなく、HTMLの土台となっているSGML(Standard Generalized Markup Language)を簡略化し、インターネット向けに使いやすくしたものです。したがってHTMLと近い関係にはありますが、HTMLの次バージョンがXMLになる訳ではありません。 XMLは、テキストデータに対して文書構造を示すタグを付けるマークアップ言語です。テキストデータですから、通常のテキストエディタでXML文書を簡単に作成できます。タグで囲むところも、結局はテキストデータであるところも、HTMLと似ています。しかし、HTMLでは「h1」、「p」のように、使用できる要素や属性があらかじめ決められているのに対し、自分の好きな名前の要素や属性を作ることができる点が大きく異なります。 たとえば、次のような住所と氏名のテキストデータがあったとします。 大阪市東住吉区石田優子いしだゆうこ これをXMLで記述する場合、いろいろなかたちが考えられますが、一例として、次のように、<住所>〜</住所><氏名>〜</氏名><ふりがな>〜</ふりがな>に分けることができます。 <住所>大阪市東住吉区</住所> 同じデータをHTMLを記述する場合、住所と氏名、ふりがなを区別して書くのは困難です。たとえば、次のようにすべて<p>〜</p>で囲むかたちになります。 <p>大阪市東住吉区</p> 一方、XMLでは、任意の要素を作り、それぞれの内容を明確にすることができます。自分の好きな要素名(たとえば「住所」という名前)を決め、 <住所>大阪市東住吉区</住所> のように、要素名を<>で囲んだ開始タグと、要素名の前に「/」を付けて<>で囲んだ終了タグで、テキストを囲むだけです。 このようにXMLでは「住所」「氏名」「ふりがな」と、内容を明確に指定することができるので、「氏名」が「石田」の人を検索する、「ふりがな」で50順に並べ替えるというような操作が簡単に行えます。HTMLの場合は、どれが住所でどれが氏名かを指定するのが難しいので、「石田」で検索をかけた場合に、住所の「石田町」と氏名の「石田」も全部検索されることになってしまいます。 また、XMLでは、他のシステムとデータをやり取りする場合、両方のシステムで「住所」「氏名」「ふりがな」というタグを使用することを決めておけば、対応する項目にスムーズにデータを移すことができます。 単に文書をWebで公開するだけなら、HTMLでもXMLでもどちらが便利というものでもありません。しかし、オンラインショップやWebアプリケーションのように、データを他のシステムとやりとりしたり、データベースに格納したりする必要がある場合、データを明確に分離できるXMLの方が利用しやすくなります。また、後述のようにXMLでは内容と文書のスタイルが完全に分離していますので、XMLを表示する環境(携帯端末、iモード、パソコンなど)に合わせて、スタイルを変化させることが容易です。 XML文書を表示するにはXMLでは任意の名前を付けることができると聞いて、まず疑問に思うのは、「勝手に付けたタグをアプリケーションがどう表示するのか」ということでしょう。 HTMLの場合は、要素や属性の種類が固定されており、各Webブラウザ側でそれらをどう表示するのかも決まっています。たとえば、 <h1>XMLの概要</h1> というXML文書をWebブラウザで表示すると、 XMLの概要のように、多くのWebブラウザでは、標準よりも大きなフォントで表示されたり、太字で表示されたりします。これは、HTMLでは「h1」要素が文書本文の見出しを示すものなので、Webブラウザが見出しと分かるように通常の本文とスタイルを変えているためです。 しかし、 <住所>大阪市東住吉区</住所> の「住所」要素を考えたのは、一個人である私です。「住所」が出てきたらどうすれば良いのか、Webブラウザやその他XMLを表示するアプリケーションにはまったく分かりません。そこで、XMLの表示には、スタイルシートが別に必要になります。 スタイルシートスタイルシートは、文字のフォントやサイズ、色、位置など、文書の見栄えを決めるものです。HTMLの場合、CSS(Cascading Style Sheets)を使用することができますが、CSSなしのHTMLだけでも、それなりの見栄えでWebブラウザに表示されます。しかし、XMLでは文書の作成者がどんなタグを作るのか誰にも分かりませんから、それをどう表示するかを前もって決めることができません。このため、XML文書以外に、それをどう表現するかを指定したスタイルシートが必要になります。 XMLでHTMLと同じCSSを使用することもできますが、XML用のスタイルシート言語としては、XSL(Extensible Style Language)が考案されています。 このXSLによって、Internet ExplorerやNetscapeのようなWebブラウザに見栄えを整えた文書を表示できるというのであれば楽なのですが、今のところ、話はそう簡単ではありません。 XSLの役割は、CSSのように文書の見栄えを決める機能(XSL Formatting Objects:XSL FO)と、あるXML文書の構造を他のXML文書に変換したり、HTMLに変換したりする機能(XSL Transformations:XSLT)の2つに分かれます。このうち見栄えを担当するXSL FOの部分は、あまり実装が進んでおらず、Internet ExplorerもNetscapeも対応していません。では、現在どうしているのかというと、XMLをいったんXSLTでHTMLに変換し、このHTMLをそのままWebブラウザに表示したり、さらにCSSを適用して表示したりしています。具体的に言うと、 <住所>大阪市東住吉区</住所> というXMLのデータがあった場合に、「住所」要素の中身を抜き出してHTMLの<p>〜</p>の中に入れるというXSLTを書き、 <p>大阪市東住吉区</p> に変換してから、Webブラウザに表示している訳です。 XMLを使うつもりなのに、途中から何故かHTMLが必要になってくるところで、何だか頭が混乱しますね。実際、XSLTのスタイルシートをながめると、HTMLのタグがあちこちに顔を出し、XMLを扱っているのだか、HTMLを扱っているのだか分からなくなります。ここが、XMLを理解する上で大きなネックになっています。 XSLTによるXML→HTML変換は、サーバ側でもクライアント(Webブラウザ)側でも行えます。
WebブラウザのXMLへの対応状況XML対応のアプリケーションがあれば、別にWebブラウザでなくてもXML文書を表示できますが、気になるのは、現在広く使われているWebブラウザ、Internet ExplorerとNetscapeでXMLを表示できるかどうかということでしょう。両者の以下のバージョンでは、本格的にXMLに対応しています。
しかし、Internet ExplorerとNetscapeの対応状況は大きく異なり、互換性がありません。 Internet ExplorerInternet Explorer 5.0以降にはMSXML(Microsoft XML Parser)が付属しており、これによってXMLを処理することができます。MSXMLは、Internet Explorerとは別にバージョンアップを続けていて、最新版のMSXMLではXSLTのかなりの部分が実装されています。このMSXMLについて理解していないと、Internet ExplorerでXMLを利用しようとしたときに、つまずきます。詳しくは、「Internet ExplorerとMSXML」をご覧ください。 NetscapeNetscape 6.0からXMLに対応しました。しかし、XSLTには対応しておらず、XML+CSSでXML文書を表示します。(Netscape 7.0からXSLTにも対応しました。) XML関連の技術XML自体の仕様はごく簡単なもので、理解するのにそれほど時間はかかりません。しかし、XMLを実際に利用するには、先に触れたXSLをはじめ、さまざまな技術が必要になってきます。たとえばプログラミング言語でXMLを操作するためには、DOM(Document Object Model)やSAX(The Simple API for XML)のようなインタフェースが必要になります。XMLを検索するためには、何らかの検索言語が必要になります。 こうしたXMLに関連する仕様には、W3C(World Wide Web Consortium)という団体が策定しているものと、他の団体や民間の会社などが策定しているものがあります。W3Cが策定しているものは、最初は大体「ワーキングドラフト」として公開されていろいろ論議され、次に「勧告候補」「勧告案」として公開された後、最終的に固まった仕様が「勧告」として公開されます。しかし、勧告になったらからといって、すぐにアプリケーションでの実装が進むという訳ではありません。逆にワーキングドラフトの段階なのに、そこそこ実装されているものもあります。W3C以外が提案している仕様でも、SAXのように多くのアプリケーションで実装され、広範囲で利用されているものもあります。 また、ある業界や団体が共同でXMLを利用するために「こういうタグを使いましょう」というような取り決めをして、それに名前を付けて公表しているものも多数あります。 XMLを学び始めるときに、こうした関連仕様/技術までも一度に理解しようとすると、大変です。「X〜」というような名前が氾濫していて、覚えきれません。直接プログラミングにタッチしない部門の人にとっては、理解しにくく、また理解する必要がそれほどない部分もたくさんありますので、とりあえずXMLとXSL(T)あたりに的を絞り、後は必要になったら見て行く方が気楽でしょう。また、結局はあまり採用されずに、忘れ去られて行く仕様もあるでしょうから、このあたりの見極めが大切です。 |