DTD: DOCTYPE

2005年06月05日(日)更新


■DOCTYPEの書き方

たけち: 前回は、DTDの構成について学んだよね。

さらら: えぇ。

たけち: 今回から少し、DTDについて詳しく学ぼうね。まずは、DOCTYPEの箇所からね。

さらら: はぁ〜い。


■DOCTYPEにはルート要素名を記述します

たけち: 次の図に示したようにDOCTYPEというキーワードの後にルート要素名を書きます。

さらら: ルート要素って、XMLデータの一番根っこ(root:ルート)になる要素のことよね。

DOCTYPEでルート要素名を指定します

たけち: そうだね。そして、その、ルート要素名の後に続く [ と、最後の行の]との間に、要素型宣言(element type declaration) 、属性リスト宣言(attribute-list declaration) 、エンティティ宣言(entity declaration) 、そして記法宣言(notation declaration) を書けばいいんだよ。

さらら: はい。分かったわ。XMLデータのルート要素の名前と、ここで書いたルート要素名を同じにすれば良いのね。

たけち: そういうことだね。じゃあ、次に、要素型宣言や属性リスト宣言などを、外部の別ファイルに書いた場合の、DOCTYPEの書き方を学んでおこうね。


■外部サブセットを指定する場合の書き方

さらら: それって、要素型宣言や属性リスト宣言などを別のファイルにあらかじめ書いておけるってことなの?!

たけち: そうなんだ。そういう場合には次の図のように、なるんだよ。

外部サブセットの指定方法

さらら: 要素型宣言や属性リスト宣言などを別のファイルに書いた場合は、それを外部サブセットって言うの?

たけち: そうなんだ。それに対して、DOCTYPEの[ と、最後の行の]との間に書いた場合には、内部サブセットって言うんだよ。

さらら: へぇ〜。そうなんだ。でも、図に書いてある外部サブセット参照って具体的にはどう書いたらいいの?

たけち: それについては、次の図を見て。

外部サブセットの指定方法

さらら: 公開識別子ってなあに?

たけち: 公開識別子は、よく知られている標準団体などが公開している仕様やデータを特定するための名前なんだけど、具体的な例については後でお話しようね。

さらら: は〜い。じゃあ、今回は・・・・

たけち: あっ、その前にもうひとつだけ。

さらら: えっ? ..... (^ ^;


■外部サブセットと内部サブセットの両方を指定

たけち: 外部サブセットと内部サブセットの両方を使うこともできるんだよ。

さらら: そうなの。。。でも、もし、外部サブセットと内部サブセットの中に同じことが書かれてしまった場合にはどうなるの?

たけち: XMLパーサは内部サブセットに書かれていることを先に処理して、そちらを有効にしちゃうんだよ。

さらら: そうなんだ。気をつけなくちゃね。

たけち: そうだね。じゃあ、今回はここまでね。

さらら: はい。ありがと。

→ 次は、要素型宣言(1) です。 (^ ^;