アンテナハウス株式会社
DTD(Document Type Definition)とは、非常に簡単に言いますと文書の型を定義するものです。
「XMLの基本用語」 先頭のサンプル「表」のDTDは、次のようになります。
<!ELEMENT 表 (データ+) >
        <!ELEMENT データ (日付,勘定科目,金額,備考) >
        <!ATTLIST データ record CDATA #REQUIRED >
        <!ELEMENT 日付 (#PCDATA) >
        <!ELEMENT 勘定科目 (#PCDATA) >
        <!ELEMENT 金額 (#PCDATA) >
        <!ELEMENT 備考 (#PCDATA) >
                    XMLファイルにはドキュメントタイプ宣言を含むことができます。ドキュメントタイプ宣言でXMLファイルをDTDに関連付けます。
「XMLの基本用語」 先頭のサンプル「表」のXMLファイルと「表」DTDを関連付けると次のようになります。
<!DOCTYPE 表 [
        <!ELEMENT 表 (データ+) >
        <!ELEMENT データ (日付,勘定科目,金額,備考) >
        <!ATTLIST データ record CDATA #REQUIRED >
        <!ELEMENT 日付 (#PCDATA) >
        <!ELEMENT 勘定科目 (#PCDATA) >
        <!ELEMENT 金額 (#PCDATA) >
        <!ELEMENT 備考 (#PCDATA) >
        ]>
        <表>
        <データ record="1">
            <日付>5月10日</日付>
            <勘定科目>交通費</勘定科目>
            <金額>1,260</金額>
            <備考>B社まで、タクシー</備考>
        </データ>
        <データ record="2">
            <日付>5月10日</日付>
            <勘定科目>交際費</勘定科目>
            <金額>15,000</金額>
            <備考>B社Aさんを接待</備考>
        </データ>
        <データ record="3">
            <日付>5月13日</日付>
            <勘定科目>会議費</勘定科目>
            <金額>900 </金額>
            <備考>喫茶店で打ち合せ</備考>
        </データ>
        <データ record="4">
            <日付>5月18日</日付>
            <勘定科目>交通費</勘定科目>
            <金額>320 </金額>
            <備考>麹町から飯田橋間</備考>
        </データ>
        <データ record="5">
            <日付>5月20日</日付>
            <勘定科目>資料費</勘定科目>
            <金額>3,000</金額>
            <備考>研修資料費</備考>
        </データ>
        <データ record="6">
            <日付>5月25日</日付>
            <勘定科目>資料費</勘定科目>
            <金額>2,000</金額>
            <備考>図書(ビジネス書)</備考>
        </データ>
        </表>
                    上のように[ ]内に置いたDTDを内部DTDと言います。
IDを使ってXMLファイルを外部DTDファイルに関連付けることができます。
「表」DTDの内容をファイル「table.dtd」に保存したとします。そのとき上述の例は次のように表すことができます。
<!DOCTYPE 表 SYSTEM "table.dtd" >
        <表>
        <データ record="1">
            <日付>5月10日</日付>
            <勘定科目>交通費</勘定科目>
            <金額>1,260</金額>
            <備考>B社まで、タクシー</備考>
        </データ>
        <データ record="2">
            <日付>5月10日</日付>
            <勘定科目>交際費</勘定科目>
            <金額>15,000</金額>
            <備考>B社Aさんを接待</備考>
        </データ>
        (中略)
        <データ record="6">
            <日付>5月25日</日付>
            <勘定科目>資料費</勘定科目>
            <金額>2,000</金額>
            <備考>図書(ビジネス書)</備考>
        </データ>
        </表>