XML文書とDTDを関連付ける(文書型宣言)

広告

XMLの構造を定義したDTDとXML文書を結びつけるには文書型宣言(DOCTYPE宣言)を使用します。内部または外部に記述されたDTDとXML文書を関連付けます。ここでは文書型宣言の記述方法について解説します。

最初にDTDが記述されたXML文書の中でどの部分が文書型宣言なのかを見てみます。

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

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

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

赤字の部分が文書型宣言です。文書型宣言ではDTDを内部に直接書くこともできますし外部に置かれたDTDの場所を指定することもできます。今回のサンプルのように全てのDTDを内部に記述する場合(内部サブセットなどと呼ばれます)の文書型宣言は次のような形式になります。

<!DOCTYPE ルート要素[
    <!-- 内部サブセットの記述 -->
]>

※ ルート要素については「ルート要素を記述する」を参照されて下さい。

-- --

DTDに関する記述を外部のファイルとして保存して関連付けることもできます。外部のDTDとXML文書を関連付けする場合には次のような形式となります。

<!DOCTYPE ルート要素 SYSTEM "URI"[
    <!-- 内部サブセットの記述 -->
]>

URIの部分には外部で公開されているDTDのURI(例:http://www.example.jp/sample.dtd)を記述します。外部のDTDと関連付ける場合でも追加のDTDとして内部サブセットを記述することはできます。

詳しくは別のページで解説しますが外部のDTDと関連付ける場合内部サブセットがない場合の文書型宣言は次のようになります。

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

<!DOCTYPE 在庫データ SYSTEM "http://www.example.jp/sample.dtd">

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

また広く公開されて不特定多数の人に利用されるような外部のDTDと関連つける場合には次のような形式となります。

<!DOCTYPE ルート要素 PUBLIC 公開識別子 "URI"[
    <!-- 内部サブセットの記述 -->
]>

Webサイトを作成する時に使用されるXHTMLなどがこのケースに当たります。例えばXHTML 1.0の場合には3つのDTDが用意されており、その中の1つであるStrict DTDに準拠したWebページを記述する場合には文書型宣言を次のように記述します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

このケースでは公開識別子が「"-//W3C//DTD XHTML 1.0 Transitional//EN"」でURIが"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"となります。

-- --

文書型宣言の記述方法について解説しました。次のページ以降ではXMLの構造を定義する方法についてみていきます。

( Written by Tatsuo Ikura )