XML(eXtencible Markup Language)は、Web上でデータを保存したり、やりとりするための言語だ。現在は実用段階に入っており、今後はWebによるデータ通信の、1つの標準になると思われる。
Markup Languageというと、やはりHTMLを思い浮かべる。XMLでは、
- HTMLで不可能だった、タグへの意味づけが可能になる
- XML文書を受け取ったアプリケーションはエレメントの意味を理解することができる
- XMLで文書を保存しておけば、さまざまなアプリケーションで文書を利用できる
HTMLのタグも、段落や見出しレベルなどといったそれぞれのエレメントの意味を提示しているのだが、これらはあくまでも表示内容(レイアウト)に対する意味づけである。最終的にはWebブラウザによって解釈され、表示されれば、本来の目的は達成されると考えていい。その文書の中身がどういった内容であるかは、Webブラウザは知りようもないし、知る必要もない。たとえば、日刊アスキー Linux上の、HTMLのテーブルで作ったLinux関連書籍ベスト10を見てみよう。
Linux関連書籍ベスト10(8月第4週)
今週 | 先週 | 書名 | 著者 | 出版社 | 価格 |
---|---|---|---|---|---|
1 | 1 | オープンソースソフトウェア | Chris DiBona、Sam Ockman、Mark Stone 編著 | オライリー・ジャパン/オーム社 | 1900円 |
2 | 2 | UNIXネットワークプログラミング Vol.1 第2版 | W.リチャード・スティーヴンス 著、篠田陽一 訳 | トッパン | 8000円 |
3 | 3 | GTK+入門 | 田中ひろゆき 著 | ソフトバンクパブリッシング | 2600円 |
このHTMLのテーブルでは、表の一番上に「今週」「先週」「書名」「著者」「出版社」「価格」といった項目が並んでおり、これらがこの表の凡例だということは、色づけされていることもあり、すぐに分かる。また、「オープンソースソフトウェア」が、書名であり、2週間続けて1位であることも分かるだろう。
しかし、アプリケーションがこうしたHTMLを読み込んでも、「書名」「著者」という文字列も、「オープンソースソフトウェア」という文字列、さらに1位、2位といったランク付けまでも、まったく同じ、テーブルの中の1要素にすぎない(まあ、テーブルのヘッダかどうか、という違いはあるにせよ)。XMLならば、たとえば
<rank>1</rank><name>オープンソースソフトウェア</name>……
として、“1”がランクで、“オープンソースソフトウェア”が書名(名前)だという定義が可能になって、このXML文書を受け取ったアプリケーションはその意味を理解することができる。そうすれば、アプリケーション側でランキングによってソートしたり、上位1位のみの書名を抽出……といったことも可能になる。もっとも大切なのは、さまざまなWebアプリケーション間で、XMLを通じてデータのやりとりが可能になるのである。
そして、XMLでデータを保存、蓄積していくと、さまざまなアプリケーションで文書を利用可能になる。たとえば、ニュースサイトの記事を、XMLで保存する場合を考えてみる。HTMLで書いた記事を蓄積していく限り、それはただのテキスト文書に過ぎず、記事検索の際も、テキスト検索→該当する単語を含む記事を無機質に抽出するのみ、といったスタイルになる。XMLで保存しておけば、記事の種類を指定したり、概要のみを表示したりといった操作が可能になってくる。そして、XML文書はアプリケーションも理解できるフォーマットなので、その記事をRDBMSに格納して利用することも可能になるわけだ。