個別要素

w3cのhtml4.01strictより要素を抜き出しています。日本語訳ではありません。
補足は独自意見ですので参考程度でご覧ください。

html

開始タグ
省略可
終了タグ
省略可
包含要素
headとbodyを含まなければなりません。(headの次にbody)
属性
langとdir(%i18n)
補足
lang属性は日本語サイトならjaと入れておくのがいいでしょう
<!--================ Document Structure ==================================-->
<!ENTITY % html.content "HEAD, BODY">

<!ELEMENT HTML O O (%html.content;)    -- document root element -->
<!ATTLIST HTML
  %i18n;                               -- lang, dir --
  >

head

開始タグ
省略可
終了タグ
省略可
包含要素
titleを必ず1つ必要とします。baseは必須ではありません。script,style,meta,link,objectを含めることができます。
属性
langとdir(%i18n)とprofile
補足
profile属性はmetaの定義をする物らしいKANZAKI.COMが参考になります。
<!--================ Document Head =======================================-->
<!-- %head.misc; defined earlier on as "SCRIPT|STYLE|META|LINK|OBJECT" -->
<!ENTITY % head.content "TITLE & BASE?">

<!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- document head -->
<!ATTLIST HEAD
  %i18n;                               -- lang, dir --
  profile     %URI;          #IMPLIED  -- named dictionary of meta info --
  >

title

開始タグ
省略不可
終了タグ
省略不可
包含要素
文字列のみ
属性
langとdir(%i18n)
補足
ページごとに内容を表す個別のタイトルをつけておくのが望ましい
<!-- The TITLE element is not considered part of the flow of text.
       It should be displayed, for example as the page header or
       window title. Exactly one title is required per document.
    -->
<!ELEMENT TITLE - - (#PCDATA) -(%head.misc;) -- document title -->
<!ATTLIST TITLE %i18n>

body

開始タグ
省略可
終了タグ
省略可
包含要素
ブロックレベルかscriptを1つ以上必要とします。子孫にわたりinsとdelを使用できます。
属性
%attrs;とonloadとonunload
補足
insとdelはbodyのどこで使用してもよい。
<!--=================== Document Body ====================================-->
<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- document body -->
<!ATTLIST BODY
  %attrs;                              -- %coreattrs, %i18n, %events --
  onload          %Script;   #IMPLIED  -- the document has been loaded --
  onunload        %Script;   #IMPLIED  -- the document has been removed --
  >