医薬品チームブログ
データ制作

DTDとXML Schema

投稿日:2016.02.25

更新日:2024.08.27


DTDとXML Schema

 

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の方がより多くの機能を使えるので便利なはずです。
以上ご参考まで。