スキーマっていったい何?
スキーマって何ですか? XML SchemaやRELAX、DTDなど、さまざまなスキーマ言語があるそうですが、そもそもスキーマとはどんな役割をしていて、なぜ必要なのでしょうかか

回答/富士ソフトABC株式会社 技術調査室
2001/3/13

 スキーマとは、情報の構造を定義するための記述のことです。ご質問にあるXML SchemaやDTDなどは「スキーマ記述言語」もしくは「スキーマ言語」と呼ばれ、XML文書で使える構成要素、つまりタグの種類や構造を記述することができます。

 スキーマという用語はデータベースの世界では古くから使われており、その場合、スキーマとはデータベースの構造を示す言葉として使われています。XMLとデータベースは見かけはまったく異なるものですが、どちらもデータをプログラムから独立したものとし、その構造を定義できる、という意味で、共通のコンセプトを備えているといえるでしょう。

 スキーマ言語を利用することで得られる最大の利点は、XML文書の妥当性を機械的にチェックできるようになる点です。例えば、BtoBを実現する企業間で、XML文書による共通の発注書フォーマットを決定するとします。このとき、スキーマ言語で発注書に使えるタグの要素や属性の種類、エンティティがどのような構造になっているか、といったことを記述します。こうすると、発注書を受け取った企業はXMLパーサを利用して、発注書がきちんとスキーマによって定義されたフォーマットに適合しているのか、簡単にチェックできるわけです。

 発注書のような特定の用途のXML文書の構造が統一されていれば、それらのXML文書を一括処理するようなプログラムも容易に開発可能でしょう。スキーマ言語の存在は、特定のXML文書の構造を統一し、その妥当性をチェックすることを可能にしており、XML文書をコンピュータで処理することに大きく貢献しています。

 こうした、スキーマ言語によって定義され、その内容に適合したXML文書を「妥当なXML文書」と呼びます。

 一方で、必ずしもスキーマ言語による記述を持たず、表面的な書き方だけがXMLの仕様に従ったXML文書を「整形式なXML文書」と呼びます。整形式なXML文書ではタグなどを書き手が自由に定義できますし、XMLパーサによって、内容を変更したり、計算したりすることが可能です。しかし当然のごとく文書ごとに備える構造はばらばらであるため、こうしたXML文書を集めて自動的に集計したりするようなプログラムを記述することはまず不可能でしょう。よって、ビジネスとしてXML文書で情報交換などをする場合には、あらかじめスキーマ言語でXML文書の構造を定義しておくことが一般的です。

 では、代表的なスキーマ言語を簡単に紹介しましょう。

 DTDは、今のところW3Cで定義されているオフィシャルなスキーマ言語であり、最もよく使われているスキーマ言語です。しかしデータに対する制約を十分に書くことができないという欠点が指摘されています。記述も独自の文法を使用していて、それはXMLの文法に沿ったものではありません(つまり、DTDは独自の記法を備えており、DTDをXML文書として記述することができない、ということです)。こうした制約や不便さを解消するために、DTDよりもさらにXML文書の構造を詳細に記述でき、しかもXMLの文法で記述できるスキーマ言語の仕様として、W3Cで「XML Schema」が考えられました。

 XML SchemaはDTDの代替物として幾つかのグループによってW3Cに提案され、現時点ではCandidate Recommendation レベル(勧告候補案)まで提示されています(http://www.w3.org/XML/Schema)。

 一方のRELAX (Regular Language description for XML)はDTD相当の機能を持ち、XML Schemaが持っている多くのデータ型を表現できるように、さらに独自に拡張したものです。DTDでは構造の記述には物足りない部分があり、XML Schemaは仕様の範囲が広範で制定や採用、また実装にも長い時間が必要です。XML Schemaのすべての機能を利用するためには、そのほか多くの仕様に対する拡張が必要と考えられていることからRELAXが考えられました。RELAXは、日本のINSTAC XML SWGが中心となって制定しました(http://www.xml.gr.jp/relax/)。

 

「Ask XML Expert」

 



XML & SOA フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日月間