10月24日、W3Cからスキーマを定義するための規格である「XML Schema」の勧告候補が公開された。今回は、なぜXML Schemaが必要なのかについて解説したい。
XMLとHTMLという2つの規格の違いは、今さらいうまでもないが、XMLは自由にタグを作ることができ、HTMLはすでにタグが決まっているという点がまず大きい。XMLは規格上でタグを作るための枠組みが規定されているだけで、その枠組みのなかで自由にタグを定義して使えるというのが特徴になっている。では、タグを定義するというのはどういったことだろうか。
まず最初に思いつくのはタグの名前を決めていくことだろう。住所録をXMLで記録したい場合なら、<名前>や<住所>、<会社名>、<電話番号>、<ファクス番号>、さらには<携帯電話>や<メールアドレス>といったタグも必要かもしれない。性別を名前の属性、あるいは郵便番号を住所の属性として表わしたい場合なら、「性別」「郵便番号」といった属性の名前も定義することになる。また、こうした個人個人のデータをまとめるためのタグとして、<住所録>というタグを利用する。
ただ、これだけではXML文書にはならない。というのもXMLの規格では、全体のタグを括る、おおもととなる唯一のタグが必要と定められているためだ。ここでは<adml>というタグを全体を括るためのタグとして利用することにしよう。この<adml>タグの下にあるのは<住所録>タグだけで、それ以外のタグが現われてはならない。<adml>タグの下に、無秩序に<名前>や<住所>といったタグが現われてしまうと、その名前がどの住所に対応しているのか分からなくなってしまうためだ。これでひととおりXML文書を作成するための枠組みを作れたことになる。以下が、まとめて書き出したものだ。
- 全体を括るのは<adml>タグ
- <adml>タグの下には<住所録>タグがある
- <住所録>タグの下には<名前><住所><会社名><電話番号><ファクス番号><携帯電話><メールアドレス>というタグが並べられる
- <名前>タグは「性別」という属性を持つ
- <住所>タグは「郵便番号」という属性を持つ
このように、タグや属性の名前、そしてそれぞれのタグが現われる順番といった文書の構造を規定したものがスキーマである(実際にはもう少し決めることがあるが)。たとえばこのスキーマに従って、以下のようなXML文書を作成することができる。
<?xml version="1.0" encoding="Shift_JIS"?> <adml> <住所録> <名前 性別="男">及川晴生</名前> <住所 郵便番号="151-xxxx">東京都渋谷区代々木x-xx-xx</住所> <会社名>明日木商事</会社名> <電話番号>03-5xxx-xxxx</電話番号> <ファクス番号>03-5xxx-xxxx</ファクス番号> <携帯電話>090-9xxx-xxxx</形態電話> <メールアドレス>oikawa@xxx.xxxx.co.jp</メールアドレス>