文書型宣言


DTD を指定する

DTD を XML に関連付けるには、最初に文書型宣言を指定します
文書型宣言は、文書が用いる DTD を指定するものです
ここに、直接 DTD を指定することもできますし、外部の DTD ファイルを読み込むようにもできます

DTD は、XML 文書とは異なるファイルに記述して
それを複数の XML 文書で共有することができます
中規模以上のプロジェクトでは、文書の統一性を守るために良く使われる方法です
DTD を外部に配置する方法は後ほど、詳しく説明します

文書型宣言は <!DOCTYPE で始まり ]> で終わります
XML 宣言と同じで、これは要素ではありません
また、DTD の内部は XML 文書ではないので、仕様が違うことを意識しなければなりません

<!DOCTYPE の次のトークンには、必ずルート要素を指定します
整形式 XML ではルート要素が必ず必要であり、妥当な DTD はルート要素が指定されています
ルート要素の次には [ を指定します
ここまでが文書型宣言で、ここからが文書型定義 DTD となります
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE object [	]>
<object>
	Kitty on your lap
</object>
サンプルを見る

Microsoft Internet Explorer 6 では、View Source for full doctype... と書かれた
文書型宣言と、文書型定義が存在することを表す文が表示されます

ただし、上のサンプルは妥当な XML ではありません
なぜならば、ルート要素が object であることを指定していても
object がどのようなこ要素を持つかなどの、関係や性質が不明です
妥当な XML 文書では、要素は DTD で宣言されていなければならないのです

ブラウザでは、妥当性の検証を行うことがほとんどないので問題ありませんが
XML アプリケーションが妥当性を要求した場合、この文書はエラーになるでしょう
要素の宣言については、次の章で紹介したいと思います


コメント

DTD の内部は XML 文書とは異なるものと考えなければなりません
DTD は、XML 文書の外部に、他のファイルとして記述することもできるくらいです
しかし、コメントは XML とまったく同じなので
DTD の中に、何らかの説明文としてコメントを残すことができます
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE object [
	<!--Kitty on your lap-->
]>

<object>
</object>
この文書の DTD には、コメントが残されています
Kitty on your lap という文字列は、コメントとして扱われるため
XML パーサは、これをなかったものとして扱うでしょう

ただし、この文書も object 要素の要素型宣言をしていないため妥当ではありません



前のページへ戻る次のページへ