5分でわかる!XML超入門 第01回 何はともあれXMLって何?

XML/XML DBのサイバーテック:5分でわかる!XML超入門 第1回

何はともあれXMLって何?

XML(eXtensible Markup Language)は1998年2月に W3Cで勧告が出された言語の仕様(XML1.0)のことです。

XMLは、HTMLと同様に、SGMLから派生してきた言語です。SGMLは異種のコンピュータ間で文書の互換を行うためのもので、文書のもつ「章見出し」「節見出し」「本文」・・・などの論理構造を記述することができます。タグは文書の論理構造に対応し、その構造や属性はDTD(Document Type Definition)と呼ばれるファイルに記述されるようになっています。DTDに基づいてレイアウトを行えば、異種のコンピュータでも文書の論理構造をそのまま再現できます。

しかし、SGMLは仕様が大きく複雑であるため、一般への普及が難しいという一面もありました。一方でHTMLはDTDを不要にするなど、仕様を思い切り緩くして、Webの標準言語となりました。しかしHTMLでは決められたタグしか使えず、商取引などに必要なデータの表現が十分にできない欠点があります。SGMLの拡張性と、HTMLの軽さを取り入れ、発展させたのがXMLです。

この言語を理解するのに、会員の皆さんにとってはソースのリストを見てもらうのが一番の早道だと思います。以下に、非常にシンプルなXMLの例を示しています。

リスト1:簡単なXML文書の例
<?xml version="1.0" encoding="Shift_JIS"?>
<?xml-stylesheet type="text/xsl" href="testxsl.xsl"?>
<おこづかい帳>
 <支出>
  <内容>
   <日付>1月20日</日付>
   <交通費>780</交通費>
   <食費>980</食費>
   <嗜好品>250</嗜好品>
  </内容>
  <内容>
   <日付>1月21日</日付>
   <交通費>950</交通費>
   <食費>1200</食費>
   <嗜好品>300</嗜好品>
  </内容>
  <内容>
   <日付>1月22日</日付>
   <交通費>500</交通費>
   <食費>1500</食費>
   <嗜好品>250</嗜好品>
  </内容>
 </支出>
</おこづかい帳>

最初の2行はさておいて、<おこづかい帳>以下のタグと中身に注目していただきたい。次のような特徴がわかるはずです。

  • 「おこづかい帳」の中に「支出」が入り、「支出」の中に「日付」や「交通費」などが入っている。つまりこのデータは構造(入れ子構造)をもっているということです。
  • タグはHTMLのようにレイアウトを示すものになっていません。XMLのタグは、タグにはさまれる内容(データ)が何であるかを示す文字になっています。しかもどうやら作者が勝手に都合よく決めたタグであるように見えます。すなわち、XMLのタグは自由に決められ、データに意味をつけることができる、ということです。

それでは、このリストはどう使えるのでしょうか。

このリストをブラウザに読み込ませても、うまくいってもリストがそのまま表示されるだけです。XML文書は、それだけではレイアウトやデザインをしてくれないのです。

XML文書を何かに使うときには、XMLパーサと呼ばれるツールがまず必要となります。パーサは、アプリケーションプログラムでXMLを扱えるようにしてくれるツールです。

さまざまなXMLパーサがあるが、例えばInternet Explorer 5.0x(以下、IE5)にはmsxmlというXMLパーサが搭載されています。これがあれば、ブラウザ上でXML文書を扱うことができます。また、IE5はXSLTプロセッサも搭載している。XSLTプロセッサというのは、XML文書を別のスタイルをもつXML文書に変換したり、XMLをHTMLに変換したりするためのエンジンのことです。XSLTは、XSLと呼ばれる、スタイルシートを記述する言語の一部として使われる仕様です。

IE5を用いれば、さきほどのXML文書の例を、ブラウザ上に何らかのの形で表示できます。表示のためには、どのような形で表示するかを決めるためのXSL文書が必要となります。XSL文書は、たとえば次のようなものです。

リスト2:簡単なXSL文書の例
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
 <xsl:template match="/">
  <html>
   <body>
    <xsl:apply-templates select="おこづかい帳/支出" />
   </body>
  </html>
 </xsl:template>

 <xsl:template match="おこづかい帳/支出">
  <table border="1">
   <xsl:for-each select="内容">
   <th colspan="3"> <xsl:value-of select="日付" /></th>
    <tr>
     <th>交通費</th><th>食費</th><th>嗜好品</th>
    </tr>
    <tr>
     <td><xsl:value-of select="交通費" />円</td>
     <td><xsl:value-of select="食費" />円</td>
     <td><xsl:value-of select="嗜好品" />円</td>
    </tr>
   </xsl:for-each>
  </table>
 </xsl:template>
</xsl:stylesheet>

簡単にピックアップ!!XMLの特徴

ここでXMLの特徴について触れておきます。
まず前項で紹介したXMLの例を見ても分かる通り、XMLの特徴は、データ(データ構造も含み)とレイアウト・デザインとを分離していることです。また、タグが自由に設定できて、データに意味を持たせることができること、そして構造化できる点です。

XMLがデザインを分離していることにより、1つのXMLデータをもとに、XSLを変えるだけでさまざまな表現を行うことができます。それはWeb上での情報提供の形をさまざまに変更したり、対象(ブラウザや携帯電話など)を簡単に増やしたりすることにとどまらず、例えば販促資料やカタログなどの印刷物、営業用の電子資料などにもすぐに形を変えることができるのです。

また、データが意味と構造をもっていることは、システム間でのデータ交換にとって大きなメリットとなります。

従来のCSV形式のデータで互換をとっているシステムの場合は、データの内容ではなく並び順によって処理が行われます。もとになるデータ項目に追加・変更・削除など行われると、そのたびに連携する双方でシステムを変更しなければならないのです。XMLなら、必要となるタグを目安にデータを取捨選択し、必要なデータだけを処理することができます。これがHTMLと違ってXMLが大きな拡張性をもつ要因になっています。

ここで簡単に特徴をまとめておきましょう。

  • XMLのタグは、データの意味を表し、構造化できる。
  • タグは自由に決めることができる。
  • XMLにはレイアウト・デザインの機能を分離している。

図:HTMLとCSVとXMLの違い

XMLは、上記で紹介した例のように単純きわまりない書き方が許される一方で、DTDを用いてタグを定義し、企業間取引でも十分に利用可能なデータ表現を可能にしています。もっとも、DTDはデータベースのようなデータ型をもっていないなど、さまざまなビジネス取引への適用には問題となる要素ももっています。そのため、XMLスキーマという、XMLの構造やデータ型を定義するための仕様がW3Cなどで検討されています。

また、XMLではXQL QueryやDOMというアプリケーションへのインタフェースが使えます。XML QueryはXML文書用の問い合わせ言語、DOMは、プログラム言語に依存しない、XML文書中のデータへのアクセスのためのインタフェースです。XMLアプリケーションでは、DOMを介してさまざまなプログラム言語でXMLを扱うことになります。これらのほか、HTMLでも可能なことであるが、スクリプト言語を使ってXMLデータを処理することもできます。

御相談、ご質問はこちら

サイバーテック お問い合わせ
お気軽にご相談ください

製品カタログ・セミナーでの講演資料など、豊富な資料がダウンロードできます

サイバーテック 製品カタログ 資料ダウンロード

最新事例の公開情報や、イベント・セミナー情報をお届け

サイバーテック メルマガ登録