XML 文書内に直接記述する方法を「内部サブセット」、別ファイルに記述
する方法を「外部サブセット」と呼ぶ。外部 DTD は開発者が用意したもの
も、標準の DTD も使用することができる。前者の識別子として SYSTEM、
後者の識別子として PUBLIC が指定される。

両方使用することもできる。XML パーサは最初に内部、次に外部サブセッ
トを読み込む。もし同じ名前の要素が定義されていた場合は、内部が優先
されて使用される。

DTD では、以下の 4 つの定義を行うことができる。

  • 要素型宣言(ELEMENT)
  • 属性リスト宣言(ATTLIST)
  • エンティティ宣言(ENTITY)
  • 記法宣言(NOATION)

DTD のように XML 文書内にどのような要素名が含まれるのか、要素の出現
順序や属性などを事前に定義したものを「スキーマ」という。スキーマの
規格には「DTD」と「XML Schema」がある。