DTDとは

広告

XMLでは自由にタグを定義して文書を作成できますが、どんなタグを使用するのかXML文書の構造を決めておくと便利な場合があります。XMLでは構造をを記述する時にDTDと呼ばれる言語を使用します。ここではDTDとはどんなものでどんな場合に使用するのかについて簡単に解説します。

例えば支店毎の在庫データをXML文書として作成し本部で集計する場合を考えてみます。各支店で独自のタグを使って文書を作成してしまうと、各支店からXML文書を受けとり処理する側はとても大変です。

A支店:

<?xml version="1.0" encoding="UTF-8" ?>
<在庫>
    <商品>
        <名前>自転車</名前>
        <在庫数>20</在庫数>
    </商品>
</在庫>

B支店:

<?xml version="1.0" encoding="UTF-8" ?>
<在庫データ>
    <商品>
        <商品情報>
            <商品名>本棚</商品名>
            <取得年月日>2017年3月</取得年月日>
        </商品情報>
        <個数>12</個数>
    </商品>
</在庫データ>

そこでどの要素をどのように使用するのかXMLの構造を定義します。各支店は同じルールに従ってXML文書を作成します。下記は同じルールに従って作成したXML文書です。

A支店:

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

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

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

B支店:

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

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

<在庫データ>
    <商品>
        <名前>本棚</名前>
        <個数>12</個数>
    </商品>
</在庫データ>

共通したルールに従ってXML文書が作成されていますので、どの要素の値がどんな値を表しているのかはっきりわかるようになりました。またプログラムなどで文書を処理する場合にも、使用されているタグが分かっていますので処理しやすくなります。

このXML文書の構造を定義するのに使用するがDTDです。DTDはXML文書の構造を定義するための言語と考えて下さい。DTDを使って定義したXMLの構造はXML文書の中に直接書いたり外部のファイルとして保存し読み込むことができます。

DTDがどんな場合に利用されるものなのかお分かり頂けましたでしょうか。次のページ以降でDTDの具体的な記述方法について解説します。

( Written by Tatsuo Ikura )