連載第2回:XMLの正体

日本オラクル 製品マーケティング本部 担当ディレクター 鈴木 俊宏

みなさんこんにちは。

今回は、XMLとはどんな言葉なのかを、XMLの特長やHTMLとの関係を交えて解説します。

XML(eXtensible Markup Language)はその名の通り「マークアップ言語」です。例えば、あるテキスト情報「家がタバコの不始末により全焼」の「タバコの不始末」をマークアップすると「家が<Cause>タバコの不始末</Cause>により全焼」となります。<Cause>..</Cause>が「タバコの不始末」をマークアップしています。このようにマークアップするとは、対象となる情報(文章や言葉)に対してその特長や意味、機能を付加することです。ちなみにXMLではマークアップする際に使った"Cause"を要素名、<要素名>で始まり</要素名>で終わる単位を要素(element)といいます。XMLの最大の特長はこの要素名を自分で定義できる点です。HTMLでは<H1>..</H1>や<TABLE>..</TABLE>といったように、ホームページをレイアウトするために必要な要素名(タグセット)を規定し、あらかじめ定義されている要素名のみ使用可能ですが、要素名を自分で定義することは出来ません。HTMLはHyperText Markup Languageの略で、HTMLもマークアップ言語の一員です。

文書としてのXML

XMLで文書を作成するということは、要素で分割しながら文章を書くこと、そしてそれら要素を文書として構成することです。XMLでは要素同士の入子構造は許していませんから、木構造を形成した文書となります。木構造とは一つの幹からいくつにも枝分かれしながら、全体を構成する構造を指します。このような構造では、たとえば検索する場合、木構造を辿りながらその文書の中の<Cause>..</Cause>を探せば、その原因「タバコの不始末」が分かることになり、とても便利です。XML文書の中の木構造を辿る手段として XMLパーサーを使います。XMLパーサーはXML文書を解釈する上で必須のツールです。

データ交換の手段としてのXML

インターネット上でXML文書をデータ交換の伝達手段として利用することにより、マークアップ言語ならではの良さをさらに引き出すことが出来ます。マークアップ言語の特長は「対象となる情報(文章や言葉)に対してその特長や意味、機能を付加出来ること」にありますが、データを要素として定義することによって、データそのものとデータの意味を分割し、しかも同一要素内に定義しておくことが出来ます。XMLをインターネットの中でのデータ交換手段として利用するということは、要素丸ごと、つまりデータとデータの意味を一緒にまとめて渡し合うことを意味します。

これまで通常のアプリケーションでは、データの意味はあらかじめプログラムの中に決め事として定義しプログラムを組んでおくため、交換するデータの数や順番が固定化されていました。したがって新たなデータ項目の追加が発生した場合など、再度アプリケーションを構築する必要に迫られます。しかしXML文書をデータ交換として利用することにより、とても融通性のあるアプリケーション構築が可能になります。

まず2つのアプリケーション(プログラム)がデータ交換をする場合を考えて見ます。

         [A]プログラム -----> [B]プログラム

一般に[A]プログラムは[B]プログラムのAPI (Application Programming Interface)を呼び出し、データをパラメータとして渡します。例えば[B]は下記のようなAPIを持っているかも知れません。
ret = InsuranceClaim_input (ClaimID, Payee, Date, Amount);

上記のAPIは4つのデータをパラメータとして渡しますが、もし[A]が[B]に新しいデータ項目LossCategoryを渡したいときはどうでしょう。この場合まず新しいAPIを定義して[B]プログラムを作成し直す必要があります。

ret = new_InsuranceClaim_input (ClaimID, Payee, Date, Amount,LossCategory);

これでLossCategoryを含めた5つのデータを渡せるようになりました。しかし別の誰かが古いAPIを参照しているかも知れませんので、いままでと同じAPI名InsuranceClaim_input()は使えませので、API名も変える羽目になります。

それでは下記のようなXML文書をデータ交換の伝文として[A]から[B]へ渡すことを考えます。

<?xml version ='1.0' ?>
    <InsuranceClaim>
        <ClaimID>023495</ClaimID>
        <Payee>日本太郎</Payee>
        <Date>2000/11/12</Date>
        <Amount>2000000</Amount>
    </InsuranceClaim>

このXML文書を受け取った[B]アプリケーションの中ではXMLパーサーを使ってXML文書の木構造を解析し、必要なデータ項目(ClaimID, Payee, Date, Amount)を抽出します。もし[A]から[B]へ新たなデータ項目を送りたい場合は、XML文書に要素として追加します。

<?xml version ='1.0' ?>
    <InsuranceClaim>
        <ClaimID>023495</ClaimID>
        <LossCategory>7</LossCategory>       --------- 追加
        <Payee>日本太郎</Payee>
        <Date>2000/11/12</Date>
        <Amount>2000000</Amount>
        <DamageReport>                               --------- 以下追加
            家が<Cause>タバコの不始末</Cause>により全焼..
        </DamageReport>
     </InsuranceClaim>

[B]アプリケーションの中ではXML文書の中から必要なデータ項目のみを抽出して利用しますから、XML文書の中の要素が減ろうが増えようが同じAPI、そしてロジックを利用することができます。

次回は、XMLをインターネットの世界で使う際に欠かすことの出来ない、XML文書の変換ついて解説します。XML文書をいろいろな形に変換することによりインターネットで繋がっているコンピュータ同士、そしてさまざまな電子機器が「いつでも必要な時に必要な情報をお互いにやりとりできる」ようになります。


第3回:XMLは変幻自在 へ進む


■第1回
 XMLとは?
■第2回
XMLの正体
■第3回
XMLは変幻自在