文書型宣言(DOCTYPE宣言)と要素型宣言

DTD で記述する文書型宣言と要素型宣言について、それぞれどういったものであるのか、そしてどのように記述するのかについて解説します。

(Last modified: )

文書型宣言と要素型宣言

文書型宣言( DOCTYPE 宣言)は XML 文書と、 XML 文書の構造を定義した DTD とを結びつけるために使用します。

構造を内部に記述するか、それとも外部のファイルに記述して読み込むかによって少し形式は異なりますが、内部に記述する場合の文書型宣言は次のような形式になります。

<!DOCTYPE ルート要素名[
    ・・・
]>

「ルート要素名」には対象となる XML 文書のルート要素の要素名を記述します。(ルート要素というのは XML 文書の一番外側にある要素です。詳しくは「要素を記述する」を参照されてください)。

そして「・・・」の部分に XML 文書の構造である要素型宣言を記述していきます(他にも属性リスト宣言や実体宣言などを記述できます)。要素型宣言では XML 文書の中でどのような要素が含まれるのかを記述します。要素型宣言は次のような形式となります。

<!ELEMENT 要素名 (内容モデル)>

「要素名」に記述した要素の中に子要素を持つのか又はテキストを記述するのかなどを「内容モデル」のところで記述します。

次の XML 文書を見てください。文書型宣言は赤色の部分、要素型宣言は青色の部分です。

<?xml version="1.0" encoding="UTF-8" ?>

<!DOCTYPE 在庫データ[
    <!ELEMENT 在庫データ (商品)>
    <!ELEMENT 商品 (名前, 個数)>
    <!ELEMENT 名前 (#PCDATA)>
    <!ELEMENT 個数 (#PCDATA)>
]>

<在庫データ>
    <商品>
        <名前>自転車</名前>
        <個数>20</個数>
    </商品>
</在庫データ>

文書型宣言では対象となる XML 文書のルート要素が「在庫データ」ですので、「在庫データ」がルート要素名のところに記述されています。

要素型宣言については「要素型宣言の記述方法」で詳しく記述方法を解説しますが、「在庫データ」要素には「商品」要素が含まれ、「商品」要素には「名前」要素と「個数」要素がこの順番に含まれ、「名前」要素にはテキストが含まれ、「個数」要素にはテキストが含まれると定義されています。実際 XML 文書もそのような構造になっています。

-- --

文書型宣言と要素型宣言について解説しました。

( Written by Tatsuo Ikura )

Profile
profile_img

著者 / TATSUO IKURA

プログラミングや開発環境構築の解説サイトを運営しています。