このウェブサイトでは、DTDについては軽くしか説明しません。というのも、Androidアプリ開発の際、DTDを意識する機会がほとんどないためです。
先の XML文書の DTDに関する部分は以下のとおりです。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
DTDに記述する内容は、以下の 4つに分類されます。
このうち、要素型宣言と属性リスト宣言を記述すると、この XML文書の要素と属性の文法を指定することができます。そうすれば、XML文書単体で、タグづけが正しく行われているかをチェックすることができます。XML文書として正しいかどうかを超えて、(公開または独自の)XML応用規格のルールに則っているかどうかをチェックできるようになります。
DTDを自前で記述する場合と、外部のものを利用する場合があります。また、外部のものを利用しながらも独自ルールを設けることもできます。
外部に存在する DTDを使用する場合の形式は以下の通りです。
<!DOCTYPE ルート要素 PUBLIC "外部サブセットのURL" "DTDの URI">
「PUBLIC」のところは「SYSTEM」になることもありますが、説明を省略します。
さきほどのサンプル文書を再度、載せてみます。
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!DOCTYPE>を使用して外部サブセットを指定しています。htmlは XMLインスタンスのルート要素を表しています。その次の PUBLICは、これが一般的な DTDであることを表しています。その次の「-//W3C//DTD XHTML 1.0 Strict//EN」は外部サブセットの名前です。最後の「http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd」は DTDが存在する URLを示しています。
XMLファイル内に XML文書の構造に関するルールを記述することができます。説明を省略します。