DTD ファイル形式とは?
DTD は Document Type Definition の略称です。.dtd ファイルは、XML、XHTML、HTML、または SGML ドキュメントの許可された要素、属性、および構造を定義するプレーンテキストファイルです。
DTD ファイルに保存されるデータは、要素の許可された入れ子や順序を含む、関連付けられたドキュメントの構造を記述します。DTD ファイルは、システム間でドキュメントを交換する際の整合性を保証します。検証機能を持つ XML パーサーは、特定のドキュメントがその DTD に対して有効であるかどうかをチェックすることもできます。宣言には主に3つのタイプが使用されます:<!ELEMENT>(子要素)、<!ATTLIST>(属性)、および <!ENTITY>(再利用可能なテキストマクロ)。
DTD は SGML 標準(ISO 8879、1986年)に由来し、1998年に W3C XML 1.0 仕様によって採用されました。よく知られている公開 DTD には、XHTML、DocBook、SVG、MathML などがあります。DTD には XML 名前空間のサポートや豊富なデータ型が欠けているため、現在は XSD (W3C XML Schema) や RELAX NG が好ましい代替手段となっています。HTML5 では、実際の DTD ファイルを参照しない最小限の <!DOCTYPE html> 宣言が使用されます。
セキュリティと安全性
リスク: LOWプレーンテキストファイルであり、実行可能なコンテンツは含まれません。DTD の外部エンティティ宣言 (<!ENTITY % name SYSTEM 'url'>) は、アプリケーションコード内の XML パーサーで処理される際に XML 外部エンティティ (XXE) 攻撃を引き起こす可能性があります。これは DTD ファイル自体を開く際のリスクではなく、DTD 処理が有効な状態で信頼できない XML を解析するアプリケーションで DTD が使用される際のリスクです。テキストエディタで開く分には安全です。
形式の詳細
概要DTD ファイルを開くプログラム
技術的詳細
詳細仕様| ファイルタイプ | プレーンテキスト・スキーマ/宣言ファイル |
| MIME タイプ | application/xml-dtd; text/plain (代替) |
| マジックバイト | なし - プレーンテキスト(XML コメントまたは直接 <!ELEMENT 宣言で始まる場合があります) |
| エンコーディング | UTF-8 または US-ASCII。オプションの先頭の XML 処理命令でエンコーディングが宣言されます |
| 圧縮 | なし - 非圧縮プレーンテキスト |
| 一般的なサイズ | 1 KB - 500 KB(単純な DTD は小さいですが、DITA や DocBook DTD のような複雑な標準は、モジュール化された .mod/.ent ファイルを含めて 100 KB 以上になることがあります) |
| 宣言タイプ | <!ELEMENT> (子要素とコンテンツモデル), <!ATTLIST> (属性とデフォルト値), <!ENTITY> (テキストマクロ), <!NOTATION> (記法タイプ) |
| 標準の起源 | SGML ISO 8879 (1986年10月); W3C XML 1.0 勧告 (1998年2月) により採用 |
| 名前空間のサポート | なし - DTD 構文は XML 名前空間よりも古く、XSD に対する主要な制限事項です |
| データ型のサポート | ID, IDREF, CDATA, NMTOKEN などに限定されており、日付や整数のような豊富な型はありません |
| 検証 | XML パーサーは、ELEMENT および ATTLIST 制約を使用して、ドキュメントを DTD に対して検証できます |
| HTML5 DOCTYPE | <!DOCTYPE html> は最小限のスタブであり、実際の DTD ファイルを参照したり必要としたりしません |
| よく知られた公開 DTD | XHTML 1.0, DocBook, DITA, SVG 1.1, MathML 2.0 - ドキュメント内の PUBLIC/SYSTEM 識別子によって参照されます |
| 後継規格 | 名前空間に対応し、豊富な型を持つ検証のために W3C XML Schema (.xsd, 2001年) および RELAX NG (.rnc/.rng, 2003年) に置き換えられました |
| リリース日 | 1986 (SGML, ISO 8879); 1998 for XML DTD (W3C XML 1.0 Recommendation, February 1998) |
| 最新バージョン | XML 1.0 Fifth Edition (November 2008); XML 1.1 Second Edition (August 2006) - DTD syntax unchanged since 1998; W3C XML Schema (XSD) and RELAX NG are modern replacements |
| オープンスタンダード | はい · ロイヤリティフリー |
| 仕様書 | www.w3.org |
DTD の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。DTD ファイルについて最初の質問をしてみましょう。
よくある質問
DTD ファイルは何に使用されますか?
新しいプロジェクトでは DTD と XSD のどちらを使用すべきですか?
XML ファイルを DTD に対して検証するにはどうすればよいですか?
xmllint --valid --noout file.xml を使用します。DTD と XSD の違いは何ですか?
DTD ファイルを Web ブラウザで開くことはできますか?
HTML の DOCTYPE 宣言とは何ですか?
<!DOCTYPE html> は、ブラウザを標準モードに切り替えるための最小限の宣言です。これは .dtd ファイルを参照せず、ブラウザ内での DTD 検証も行われません。