SGMLとXMLとHTMLは、開発の経緯や利用目的は違いますが、
タグで構成される
マークアップ言語である事を
前回記しました。この
タグは
スキーマ言語と呼ばれるデータによって仕様が決定しています。
ここでは代表的なスキーマ言語である
DTDと、XMLの為のスキーマ言語である
XML Schemaについて、その違いをみてみたいと思います。
今回も
大雑把な解説になります。概念をつかむきっかけにでもなれば幸いです。
スキーマ言語
まず
スキーマ言語について、Wikipediaには下記のようにありました。
スキーマ言語(スキーマげんご)とはXMLやSGML等で文書を作成する際、その文書構造を定義する言語を言う。
出典:Wikipedia
ここでの「文書構造を定義する」とは、つまり
タグのルールを決めるという事です。
例えば、医薬品添付文書のSGMLだと
<warnings>タグと</warnings>タグの間に、【警告】の内容を記載するというルールがあります。
このようなルールを決めているのが
スキーマ言語で、医薬品添付文書のSGMLの場合、「Package_insert.dtd」という
DTDがそれにあたります。
開発経緯
DTDはもともと
SGMLのスキーマ言語として開発されました。
その後、
SGMLをベースにXMLとHTMLが開発されます。SGMLを踏襲してスキーマ言語は
DTDでした。
やがてXMLが広く普及し様々な場面で利用されるにあたり、DTDより
さらに高機能なスキーマ言語が求められるようになります。そこで
XML用のスキーマ言語として新たに開発されたのが
XML Schemaです。
データ形式
|
拡張子 |
文法 |
DTD |
.dtd |
独自の文法 |
XML Schema |
.xsd |
XMLの文法 |
DTDは、
「.dtd」という拡張子のデータで作成されます。
XML Schemaは
「.xsd」という拡張子のデータで作成されます。
文法について、
DTDは、
独自の文法で記述されますが、
XML Schemaは
自身自体がXMLの文法で記述されます。
この点は
XML Schemaの扱いやすさの一因ともなっています。
SGMLとXMLとHTMLの対応スキーマ言語
以上を踏まえて、SGMLとXMLとHTMLの場合、
対応するスキーマ言語は下記のようになります。
|
SGML |
XML*1 |
HTML*2 |
*1:実際にはXMLに適応するスキーマ言語はDTDとXML Schemaの他にもあります。
*2:DTDによる定義はHTML4.01まで、HTML5以降はDTDを扱わないようですが解説は割愛します。 |
DTD |
○ |
○ |
○ |
XML Schema |
- |
○ |
- |
XML SchemaはXML用のスキーマ言語なので、適応するのは当然
XMLのみです。
XML Schemaの利用の不可は、
SGMLとXMLの大きな違いの1つと言えます。
機能の違い
肝心の
DTDとXML Schemaの機能面での相違点について、
ほんの一部ですが下記に記します。
どうしても技術的な内容になるので、参考までに確認いただければと思います。
|
DTD |
XML Schema |
タグの使用回数の指定 |
0回、1回、∞回 |
任意の回数を指定可 |
データ入力の指定 |
文字列のみ |
数値や文字列、日付や時間… |
名前空間の利用 |
不可 |
可 |
タグの登場回数の指定
DTDは、タグの使用回数を指定する際、
0回と1回と∞回(何回使用しても可)でしか指定出来ませんが、
XML Schemaは、任意の回数に指定できます。
データ入力の指定
タグ内に入力する文字を、
DTDは単なる「文字列」としてしか指定出来ませんが、
XML Schemaは、「文字列」はもちろん、
「数値」の範囲を指定したり、
「日付」や
「時間」を指定したり、かなり詳細な設定が可能です。
名前空間の利用
XML Schemaは、DTDには使えない、
「名前空間」という機能を利用出来ます。
「名前空間」を一言で解説するのは難しいのですが、1ファイルのXMLに対して、複数のXML Schemaを参照して、
より拡張性の高いデータの作成、参照が可能になります。
XML SchemaはDTDと比べ、他にも様々な機能が追加されています。
まとめ
DTDとXML Schemaはタグの仕様を決定するスキーマ言語
XML SchemaはXMLの為に開発されたスキーマ言語、DTDよりも高機能
XMLを扱う場合は、DTDでもXML Schemaでもタグの仕様を決められますが、XML Schemaの方がより多くの機能を使えるので便利なはずです。
以上ご参考まで。