コンピュータ上でデータを記録する方式は、テキスト形式とバイナリ形式に大別できます。
XMLは、テキスト形式による電子文書保存規格の1つです。
コンピュータは基本的に数値しか扱えないため、文字を記録するには、あらかじめ文字に番号を割り振っておき、この番号(文字コード)で記録しています。
テキスト形式とは、この文字コードだけで情報を記録する方式です。
テキスト形式で記録されたファイルをテキストファイルと言います。
テキストファイルは、テキストエディタと呼ばれるソフトウェアで簡単に読み出すことができます。
機種の異なるコンピュータ同士でも、読み出せます。(文字コードの体系を変換する必要が生じることもありますが...)
一方、ワープロなどでは、レイアウトや文字飾りなども表現するため、文字コードとは異なる固有な数値データも一緒に記録します。
このような形式がバイナリ形式です。
画像データなども画素を記録するのでバイナリ形式です。
バイナリ形式のデータは、読み書きできるソフトも限られています。
多くの人が多様なコンピュータ環境で情報を利用するには、テキスト形式で表現できたほうが都合がよいことになります。
テキストだけで複雑な情報を表現しているよい例は、インターネットのホームページで使われているHTMLでしょう。
HTMLは、タグと呼ばれるカッコ<>で囲まれた文字列を使って、字体、色、表、レイアウトなど従来バイナリ形式で扱っていたようなことまで表現できます。
このようにタグを使ったテキストでデータを表現する方式(マークアップ言語と言います)は、いくつか開発されていますが、HTMLの基になっているのはSGMLと呼ばれる規格です。
フル規格のSGMLは、複雑で一般に広く普及しませんでしたが、
簡易実装版の位置づけにあるHTMLは、ルールが簡単で、インターネットで広く普及しました。
しかし、HTMLは、
データ構造そのものと、レイアウト表現が分離されていない。
タグの入れ子関係(階層化)が崩れていても、許してしまう。
などの問題が指摘されました。
XMLも、HTMLと同様にSGMLを基にしています。XMLがHTMLと大きく違うのは、HTMLが定義済みタグを用いた実装例であるのに対して、XMLは、タグ定義機能や厳密なデータ構造定義機能を保持したSGMLの機能限定規格だということです。
XMLは、以下のような特徴を持ちます。
XMLは、定義済みのタグを持ちません。(例えば、HTMLの <FONT > のような)
タグは、XMLの利用者が別途定義します。
タグの入れ子関係(階層化)が厳密です(HTMLのようにいい加減な記述はできません)
使用する文字コード体系 ( UTF-8、ShiftJIS、EUCなど ) を必ず指定します。
タグは、データの性質を定義したり、繰り返しや階層を表現するのに用います。表示のレイアウトは分離して扱います。
SPMAPで印刷書式に用いているのは、厳密にはXML(の実装例)ではありません。
文字コード系は固定( ShiftJIS )ですし、データ構造とレイアウト表現が混ざっています。
ただし、入れ子関係が厳密であること、大文字小文字の区別があることなど似た点もあります。