xml

拡張可能なマークアップ言語 XMLの基礎知識9項

XMLとは、拡張可能なマークアップ言語の略語である。拡張可能とは、利用者が自由にタグを作成できることであり、マークアップ言語とは、タグによって情報に意味づけするための約束事を取り決めた言語である。ここでは、様々な場面で利用されているXMLの基礎知識を9つ取り上げる。

1 マークアップ言語

XML(Extensible Markup Language)とは、拡張可能なマークアップ言語と訳される。マークアップとは、タグによって情報に意味づけすることであり、そのための約束事を取り決めた言語をマークアップ言語という。例えば、HTML(Hypertext Markup Language)はWebページを記述するためのマークアップ言語である。よりわかりやすく言えば「Webページを記述するのに使用可能なタグ(<html>や<head>など)を定めたもの」がHTMLである。

 

2 拡張可能

拡張可能とは、利用者が自由にタグを作成できることである。つまり、「<」と「>」の中に記述する言語を何にしてもよいということである。HTMLでは、HTMLで定められた種類のタグしか使えない。その意味でHTMLは「固定的なマークアップ言語」と言える。

 

3 メタ言語

メタ言語とは、言語を作るための言語のことである。例えば、<dog>や<cat>というタグを使う「ペット言語」という独自のマークアップ言語を作ることもできる。ただし、XML形式のマークアップ言語であるためには、いくつかの約束事を守らなければならない。以下にXMLの主な約束事をまとめる。

 

XMLの主な約束事

  • XML文書の先頭には、XMLのバージョン、文字のエンコード方法を示す「XML宣言」を記述する
  • 情報は「<タグ名>」という開始タグと「</タグ名>」という終了タグで囲む
  • タグ名は数字で始まるものではいけない。タグ名に空白を含めることはできない
  • 半角スペース、改行、TABは空白とみなされるので、任意に改行、インデント(字下げ)できる
  • 情報がないことは「<タグ名></タグ名>」だけでなく「<タグ名/>」でも表せる
  • 大文字と小文字は区別される
  • タグの中に他のタグを含めて階層構造を表すことができる。ただし、タグの関係が交差してはいけない
  • XML宣言以下の全体を囲む「ルート要素」と呼ばれるタグが1つだけ必要となる
  • タグの中に「属性名=”値”」という形式で、任意の属性を付加することができる
  • <、>、&、”、’といった特殊記号を情報としたい場合は、&It;、&gt;、&amp;、&quot;、&apos;という表現を使う
  • 「<![CDATA[」と「]]>」で囲めば、<、>、&、”、’、といった特殊記号をそのまま記述できる。特殊記号が多い場合に便利
  • コメントは「<!–」と「–>」で囲んで示す

 

XMLのデータはテキスト形式である。すなわち、文字だけから構成される。XMLの約束事を守って記述された文書をXML文書という。XMLファイルは、メモ帳などのテキスト・エディタを使って作成できる。

XMLの約束事を守って正しくマークアップされている文書を整形式のXML文書(Well-formed XML document)という。XMLパーサー(Internet Explorer 4.0以降に組み込まれている)によって解釈できれば、整形式のXML文書であるといえる。

 

4 情報に意味づけをする

XMLの特徴は、情報に意味づけできることである。例えば、ある商品が一番安いショッピング・サイトで購入したい場合を考える。HTMLのタグの場合、商品番号と商品名と価格を区別できるものはない。しかし、XMLを使えばそういったタグを作成することができる。つまり、HTMLはあくまでWebページを表示するという用途に限定しておき、新たにXMLというメタ言語を作成したのである。HTMLは人間が見るものであり、XMLはコンピュータが見るものと言える。

インターネットの世界では、W3C(World Wide Web Consortium)という組織が「W3C勧告」という形でさまざまな仕様を取り決めている。XMLは1996年にW3C勧告となっている(XML1.0)。XMLといおうメタ言語を使って、Webページ用のマークアップ言語を取り決めたXHTML(Extensible Hypertext Markup Language)というものもあり、2000年にW3C勧告となっている。

 

5 汎用的なデータ交換形式

汎用的とは、特定のメーカーに依存しない仕様のことである。例えば、あるメーカーのあるアプリケーションがXMLファイルでデータを保存したなら、そのXMLファイルを他のメーカーの他のアプリケーションに読み込むことができるということだ。このような汎用的なデータ交換形式は、XMLが最初というわけではない。コンピュータ業界では、長年にわたって「CSV」というデータ交換形式が使われてきた。

CSV(Comma Separated Value)とは、カンマで区切られた値と訳され、情報を「,」(カンマ)で区切って記述する方式である。XMLと同様に、文字だけから構成されたテキスト・ファイルとして作成されている。CSVファイルは、一般的にファイル名の拡張子を.csvにする。例えば、「1234,”ハンドバック”,19800」(順に商品番号,商品名,値段)のように記述できる。文字列は「”」(ダブルクォーテーション)で囲み、数値はそのまま記述する。1桁のレコード(意味のある情報のまとまり)ごとに改行する。

CSVには、情報が記録されているだけで、個々の情報の意味づけはない。その点ではXMLの方が優れていると言える。しかし、XMLの欠点として「サイズが大きい」という点がある。例えば、CSVファイルのサイズで52バイトだったものが、XMLファイルだと291バイトになり、5倍以上にもなってしまう。サイズの大きなファイルはディスク容量を多く取り、送信時間が長くなり、処理時間も長くなる。CSVとXMLは、速さかを求めるか便利さを求めるか、優先順位の違いで使い分ければいいのだ。

 

6 タグに名前空間を設定できる

名前空間(Namespaces)とは、タグの名前を定義した企業や人物を表すものである。同じ名前のタグであっても意味づけが違うという混乱を防ぐために、XML名前空間というW3C勧告がある。タグの属性として「xmlns=”名前空間の名称”」と記述することで名前空間を設定できる。xmlnsはXMLのNameSpaceという意味である。名前空間の名称には、世界で唯一の識別子を使う。例えば、企業のURLなどである。

 

7 文書構造を厳格に定義できる

XML文書は「DTD」という情報を持つことで、「XMLインスタンス」の内容が適切な表現であるかどうかを厳しく調べることができる。DTD(Document Type Definition)とは文書形式の定義のことで、これを持つXML文書を妥当なXML文書(Valid XML document)と呼ぶ。XML文書全体は「XML宣言」「XMLインスタンス」「DTD」の3つの部分から構成される。XML宣言とは、XML文書の先頭にある<?xml version=”1.0″ encoding=”Shift_JIS”?>の部分のことである。XMLインスタンスとは、タグでマークアップされた部分である。

DTDと同様に、XMLインスタンスの構造を定義する手段としてXML Schema(XMLスキーマ)がある。DTDは、マークアップ言語の元祖とも言えるSGML(Standard Generalized Markup Language)の仕様をXMLで借用したようなものだが、XML SchemaはXMLのために新たに考案されたものなので、データ型や桁数などで厳しくチェックできるようになっている。DTDは1996年のW3C勧告で、XML Schemaは2001年のW3C勧告である。

 

8 解釈する部品がある

XML文書には、その文書を処理するプログラム部品(コンポーネント)がある。W3C勧告となっているDOM(Document Object Model)と、SAX(Simple API for XML)である。DOMもSAXもコンポーネントの仕様であり、何らかのメーカーやコミュニティなどから実際のコンポーネントが提供される。

 

9 利用場面

XMLを使って、下記のような様々なマークアップ言語が開発されている。従来は、メーカーごとにアプリケーションの独自仕様で、数式やマルチメディア・データなどを表現していたが、今後はXML形式のマークアップ言語が主流になるだろう。

 

XMLで作られたマークアップ言語の例

  • XSL:XML文書をレイアウトする(W3C)
  • MathML:数式を記述する(W3C)
  • SMIL:マルチメディア・データをWebページへ組み込む(W3C)
  • MML:電子カルテを記述する(電子カルテ研究会)
  • SVG:ベクトルを使って画像データを表現する(W3C)
  • JepaX:電子ブックを表示する(日本電子出版協会など)
  • WML:携帯端末にコンテンツを表示する(WAPフォーラム)
  • CHTML:携帯電話にコンテンツを表示する(アクセスなど6社)
  • XHTML:HTML 4.0をXMLで定義したもの(W3C)
  • SOAP:分散コンピューティングを実現する(W3C)

 

個々のマークアップ言語では、その目的を実現するために様々なタグが定義されている。例えば、数式を記述するMathML(Mathematical Markup Language)では、ルート、べき乗、分散などを表すタグが定義されている。

SOAP(Simple Object Access Protocol)は、分散コンピューティングで使われる。分散コンピューティングとは、ネットワークで接続された複数のコンピュータにプログラムを分散して配置し、それらを連係動作させることでコンピュータ・システム全体を機能させるものである。例えば、A社のコンピュータにあるプログラムAが、B社のコンピュータにあるプログラムBを呼び出すことである。

SOAPは従来の分散コンピューティング技術を、より手軽に、汎用的に利用できるようにしたものである。プログラムを呼び出す情報とその実行結果の情報を、汎用的なデータ形式であるXMLで表す。通信に利用するプロトコルは、XMLのデータを送受信できさえすれば何でもかまわない。一般的なHTTPやSMTPも利用できる。SOAPの登場によって、より容易に分散コンピューティング環境を構築できるようになったと言える。

 

最後に

XMLが多方面で注目され、様々な場面で利用されているのは事実である。しかし、あくまでXMLは汎用的なデータ形式であることに意味がある。つまり、異なるマシンの異なるアプリケーションが相互に接続されたインターネットという環境でこそ、大いに役立つものなのである。1台のコンピュータの中や1つの企業の中だけで使われるデータならば、XML形式にするメリットはない。ファイルのサイズが大きくなるだけムダである。

同様に、分散コンピューティングにXMLベースのSOAPを採用するのも、異機種間接続でこそ意味がある。同じメーカーのマシンとアプリケーションで構築された環境なら、XMLベースでないメーカー独自の手段を使った方が、はるかに高速に処理が行える。

XMLは「万能」ではなく、「汎用」なのだ。

次回は、SE(System Engineer)についてまとめる。

コンピュータはなぜ動くのか~知っておきたいハードウエア&ソフトウエアの基礎知識~


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>