iframeは、内容を持つ要素なので<iframe *****/>なんてことはありえません。
iframeに関しては、HTMLもXHTMLもまったく同じです。すなわち
<!ELEMENT IFRAME - - (%flow;)* -- inline subwindow --> ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/present/frames.html#edef-IFRAME )
この - - は開始タグも終了タグも省略できないということです。
→3.3.3 要素宣言 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/intro/sgmltut.html#h-3.3.3 )
HTMLにおいて、終了タグを省略できる要素は、
COLGROUP,DD,DT,LI,OPTION,P,TBODY,TBODY,TFOOT,TH,THEAD,TR
・・・これらは、終了タグがなくてもその要素が終わったと判断できるからですね。たとえぱ
<p>なんたらかんたらpはPargrph--段落の意味--
<h2>見出し</h2>
だと、<p>内にブロック要素は置けないのでブロック要素が現れた時点で、段落は終わったと判断できるからです。
終了タグが存在しないものは、<img>や<link>ですが、これらは空要素で、内容を持たない要素だからですね。
★基本的なことですが、HTMLは文書を構成する要素に分解して、それぞれの要素をタグでマークアップするものです。たとえば<p>段落の内容</p>・・・
<img src="*****>は、内容を持たないから終了タグはないのです。
HTMLの要素一覧がこちらにありますからしつかり理解しておくこと
★Optional, Forbidden, Empty, Deprecated, Loose DTD, Frameset DTD ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/index/elements.html )
一方、XHTMLは、HTMLをXMLの文法に合うように書き直したものですから、空要素は<img />としなければなりません。これは、<img></img>の簡略した書き方です。HTMLの仕様上はこの様な書き方が許されるのですが、これをきちんと解釈できるブラウザはほとんどないでしょう。
なお、transitinalは、もういくらなんでも止めましょう。1999年12月のHTML4.01の勧告以来
「HTML文書を作る場合には、この仕様における、他のDTDセットではなく strict DTD に適合する文書を作るよう推奨する。 」と強く言われ続けています。XHTML1.0は、HTML4.01をXMLで書き直したものですから同じです。その次のXHTML1.1では、transitinal,framesetはすでに存在していませんでしたし、HTML5では、HTML4.01での
「推奨しない要素・属性とは、新しい枠組みができたことによって、陳腐化したものを指す。推奨しない要素は、リファレンスマニュアルの各所で定義し、推奨しないことを明記する。推奨しない要素は、HTMLの将来のバージョンでは廃止になる可能性がある。 ( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/conform.html#h-4.1 )」
の予告どおり、廃止されています。
XMLの必要がなければ、XHTMLでなくて、HTML4.01strictをしっかり身につけたほうが良いでしょう。
お礼
物凄くわかりやすい回答ありがとうございます