結論を先に言おう。ソースを見たとき<textarea>から</textarea>の間に<や>や&を含めてはいけない。文字参照(<、>、&)はブラウザによって対応する文字(<、>、&)に変換される。<textarea>の後に終了タグの開始を意味する<が出てきた時点でtextareaは終了しているとみなされる。XHTML 1.1ではtextareaの中身は#PCDATAでなければならない(Parsed Character Data)。
cgiで出力された文書の構造を考えれば、textareaの中身に文書自体の見出しを示すh1タグとか段落を示すpタグが含まれるのはおかしい。編集先の文書の構造とcgiで出力された文書の構造の間に関係は無いからだ。ゆえにtextareaの中に構造化タグを含めるのはおかしい。ソースを見たときに構造化タグを示す<や>がtextareaの中に含まれてはならない。では&はどうだろうか。
#PCDATAは構文解析対象文字データなので、textareaに含まれる内容はtexareaが含まれている文書構造ツリーの枝になれるということだ(頭に#がついているので子要素を自身の内に含むことができる)。でも、編集中の文書をe.cgiの文書構造から見れば、ただのデータであり、2つの文書の間に内容構造のオーバーラップがあってはならないはずだ。
書いたはいいが、いまだにDTDの読み方は良くわからない。特にXHTMLになってモジュール化されてよりわからなくなった。つまりどこを見れば目的の情報にたどり着けるのか良くわからなくなった。上に書いた情報も、Googleで探し当てた情報だし。