拡張しなければ使えない言語 XML

初稿: 2005-08-10

XML は言語の一種

XML が何なのかを説明することは簡単ではありません。それはなぜかというと XML では例えば、「HTML はホームページを書くために使う」というような具体的な表現が難しく、抽象的な表現が多くなってしまうからです。まず最初に意識しておきたいことは XML はコンピューター言語の一種だということです。とはいっても例えば C や Java のような、コンピューターに指示を出すためのプログラミング言語ではなく、マークアップ言語というものです。マークアップ言語とは、データの中に「情報を持つ印 (マークアップ)」を埋め込むことによって、コンピューターにデータの情報を伝えるための言語です。XML は「Extensible Markup Language)」と名付けられるように「拡張可能なマークアップ言語」ということになります。

よく似ていますが HTML とは全く別物

XML に興味を持った方はおそらく同じマークアップ言語である HTML を既に知っていることかと思います。そして漠然と「XML は HTML によく似たもの」と捉えたかと思います。これは間違いではありません。実際に HTML と XML は見た目はよく似ています。しかし本質は大きく違います。本来、XML と HTML は同次元で比べられるものではありません。あえて比べるなら、XML は 「SGML」 という言語と比べられるべきであり、 HTML は 「XHTML」 という言語と比べられるべきです。実は XML は「拡張可能なマークアップ言語」というより「拡張しなければ使えない言語」といえる言語です。HTML はそのまま利用することにより、例えばホームページを書くことができますが、XML はそのままでは何もできません。実は HTML は既に拡張済みの言語で、SGML (Standard Generalized Markup Language) という言語を拡張した言語です。つまり XML と SGML は共に拡張前の言語であって、この意味で XML は SGML と比べられるべきです。対して XHTML (eXtensible Hyper Text Markup Language) は、HTML を SGML ではなく XML を拡張して実現した言語です。言ってみれば HTML の XML 版です。この意味で同じ拡張後の言語として比べられるべきなのは HTML と XHTML なのです。

XML と HTMLの概要

図: XML と HTMLの概要
XML と同列なのは SGML といえる。また HTML と同列なのは XHTML といえる。

拡張しなければ使えない言語ってどういうこと?

前節で XML を「拡張しなければ使えない言語」と述べましたが、これは非常に重要な XML の特徴です。そこで詳しく見てみます。XML ではマークアップの一つとしてタグを使用します。これは多くの人がご存知でしょう。

昨日、<place>東京</place>へ行きました。

「<place> タグは場所を示すマークアップ」と定義して、上記のように場所を示す箇所をそのタグで囲みます。このように「東京」が「場所」であることをコンピューターに伝えたいとします。しかし、XML にはそんな定義はありません。「<place> タグは場所を示すマークアップ」という定義は筆者が勝手に付けたものであり、XML を拡張した定義です。同じように次のことがいえます。XHTML で <p> タグは段落を表すものですが、これは XML の定義を拡張し <p> に段落の意味を持たせたものです。これらからいえることは XML 自体はマークアップの「必要な最低限の文法」を定義しているのに対し、XML を拡張した言語はそれらに加え、マークアップの「意味」を定義しているといえます。「意味」を持たないマークアップを使っても役に立ちません。つまりこれが XML は「拡張しなければ使えない言語」、言い換えれば「拡張することを前提とした言語」ということなのです。

XML を拡張した言語には何がある?

XML を拡張した言語をよくサブセットと呼びます。サブセット (subset) とは部分集合 (集まりの一部) の意味ですが、XML を拡張した言語は当然 XML でもあるので、こう呼ばれます。誰でもサブセットを勝手に定義してよいのですが、そうすると世の中はサブセットであふれてしまいます。これでは互換性がなく困ってしまいます。そこで一般によく使われるサブセットは標準化されています。XHTML はその代表としてよく知られているのではないでしょうか。他にも XML サブセットを定義するための XML Schema、XML 文書の書式を変換するための XSLT、ベクター画像を表現するための SVG、最近ウェブ上でのコンテンツ配信で注目されている RSS などがあります。

XML サブセット

図: XML サブセット
XHTML などのサブセットは XML に含まれる。


目次へ戻る