なぜ、自動開閉式のスクリプトエレメントは機能しないのでしょうか?

ブラウザが正しく認識できない理由は何ですか?

<script src="foobar.js" /> <!-- self-closing script element -->

だけが認識されます。

<script src="foobar.js"></script>

これはXHTMLサポートの概念を崩すものでしょうか?

注)この記述は、少なくともすべてのIE(6-8 beta 2)では正しいです。

ソリューション

XHTML 1の仕様では

С.3. Element Minimization and Empty Element Content

コンテンツモデルが EMPTY ではない要素の空のインスタンス(例えば、空のタイトルやパラグラフ)がある場合、最小化されたフォームを使用してはいけません(例えば、<p> </p> を使用し、<p /> を使用してはいけません)。

XHTML DTDでは、script要素を次のように指定しています。


解説 (10)

Internet Explorer 8以前のバージョンでは、XHTMLの解析をサポートしていません。XML宣言やXHTMLのdoctypeを使用しても、古いIEはドキュメントをプレーンなHTMLとして解析します。そして、プレーンなHTMLでは、self-closing構文はサポートされていません。トレイリングスラッシュは無視されますので、明示的に閉じるタグを使用する必要があります。

IE 9以降](http://blogs.msdn.com/b/ie/archive/2010/11/01/xhtml-in-ie9.aspx)のようにXHTMLの解析をサポートしているブラウザでも、ドキュメントをXMLコンテンツタイプで提供しない限り、ドキュメントをHTMLとして解析します。しかし、その場合、古いIEはその文書を全く表示しません

解説 (3)

XMLやXHTMLとは異なり、HTMLは自己閉鎖型の構文を知りません。 XHTMLをHTMLとして解釈するブラウザは、/文字がタグの自閉性を示すことを知りません。代わりに空の属性のように解釈し、パーサーはタグが「開いている」と考えます。

<script defer>` が `<script defer="defer">` として扱われるのと同様に、`<script />` は `<script /="/">` として扱われます。
解説 (3)