DOCTYPE宣言は、公開識別子とシステム識別子に分かれ、公開識別子はDTDの種類を、システム識別子はネットワーク上のDTDの場所を示します。公開識別子の記述は、HTMLファイルでは必須で、XHTMLではシステム識別子までの記述が必須になります。DOCTYPE宣言は大文字と小文字が区別されます。
HTML文書では、DTDに基づき、DOCTYPE宣言を行います。
最新のHTMLバージョンはHTML 4.01で、さらに、「Strict DTD」、「Transitional DTD」、「Frameset DTD」に分かれます。
「Strict DTD」は、その名の通り、厳格なHTMLであることを宣言するもので、タグについてはHTML 4.01で非推奨とされているものは使用できず、また、その文書構造も「厳格」であることが求められます。
「Transitional DTD」は、前バージョンからの移行期に用いられるもので、非推奨タグの使用や、HTMLによるレイアウトについてもある程度許容されます。恐らく、WWW上で、現在最も普及しているDTDであると思われます。
「Frameset DTD」は、フレームの使用の際に用いるもので、ページを呼び出している親フレームで宣言します。それ以外のページで、「Frameset DTD」を宣言する必要はなく、他の宣言を行うことになります。「Frameset DTD」は「Transitional DTD」を元に作られており、フレームに関するタグが使用可能であることを除けば、「Transitional DTD」と変わりはありません。
XHTMLは、HTMLがブラウザの独自拡張によって整合性を欠く言語となったことから、XMLに準拠し、且つ従来のブラウザでも閲覧可能な言語として作成されたものです。
XHTML 1.0までは、HTMLと同様、「Strict DTD」、「Transitional DTD」、「Frameset DTD」に分かれていましたが、XHTML 1.1からは一つに統合され、これによってフレームの使用が出来なくなりました。
また、XHTMLではDOCTYPE宣言よりも前に、まず、XML宣言を行わなければなりません。さらに、HTMLではタグの記述は大文字でも小文字でも可能でしたが、XHTMLはタグとその属性は小文字でなければなりません。
XML宣言はDTDとは違い種類はなく、<?xml version="1.0" encoding="Shift_JIS"?>のみになります。
encoding=""には文字コードが入り、基本的にWindowsではShift_JIS、UNIX系(Linux)ではEUCになります。
「Strict DTD」、「Transitional DTD」、「Frameset DTD」の解釈は、HTMLのものと変わりはありません。