現在では、XML技術を利用する場合には、スキーマ言語としてDTDを採用するケースは少なくなる傾向にある。XMLが勧告された後、DTDに対してはいくつかの欠点（XMLの文法とは異なる文法を採用していることや、XML名前空間に対応していないことなど）が問題として指摘されてきたためである。そのため、XML技術は広く普及したものの、DTDの欠点が XML技術を柔軟に活用する際の障害の一つとなっていた。
DTDの構造.
DTDは、要素型宣言、属性リスト宣言、エンティティ宣言（または、実体参照宣言）、記法宣言により構成される。
要素型宣言.
対象のSGML/XML文書において使用する要素を宣言し、その要素の名前、関連する要素との親子関係および出現順序を定義する。
このとき、要素名は、対象の要素の名前であり、構成要素は、以下の種類に分けられる。
EMPTY.
対象要素に子要素が存在しない場合（例えば、後述する属性のみの場合など）に指定する。
対象要素配下に任意の要素、任意のデータが格納される場合に指定する。
子要素.
対象要素配下の子要素の順番および出現回数を指定する。
属性リスト宣言.
対象のSGML/XML文書の要素が持つ属性の型やデフォルト値を定義する
例えば、俳優の出身地域を属性として定義する場合、以下のような属性リストが考えられる。
エンティティ宣言、記法宣言.
エンティティ宣言は、対象のSGML/XML文書内に記述できるエンティティ参照について定義する。SGML/XML文書内でエンティティ参照を記述すると、DTDのエンティティ宣言にしたがって、文字列を置換したり、外部ファイルの内容を埋め込むことができる。
記法宣言は、対象のSGML/XML文書内から参照する外部ファイルの種類 (例えばJPEGなど) を指定する。
DTDの例.
簡単なDTDの例を示す。
このDTDでは以下の内容が記述されている。
このDTDに従って作成したXML文書の例
キャッシュ
キャッシュ
地名.
はしだて (列車)
概要.
京都駅および亀岡駅などの京都府中部の各停車駅と京都府北部の各地域（中丹・丹後）を結んでおり、福知山市・宮津市などとの連絡を成している。
列車名の由来.
運行概況.