DOCTYPE宣言の前に文字入力すると、現在のスキーマの判別ができなくなる問題について
HOME > Expression Webを使ってみよう > Expression Web FAQ
改訂バージョン:1.5
概要
コードビューにおいて、DOCTYPE宣言の前に文字入力すると、現在のスキーマを読み取ることができなくなる問題について説明します。
詳細
W3Cの仕様書によれば、XHTML文書の場合、全ての文書においてDOCTYPE宣言の前にXML宣言を入れることが強く求められています。特にUTF-8以外の文書(シフトJISなど)においてはXML宣言を入れることが必修とされています(参照:http://www.w3.org/TR/xhtml1/)。
そこで、例えばXHTML 1.0 Transitional
のスキーマ(このWebページ)にXML宣言をコードビューの1行目、すなわち、DOCTYPE宣言の前に挿入すると、以下のようになります。

このように、たとえ正しいXHTML文法で書かれてあったとしても、空要素のタグ(<meta>タグや<img>タグ等)で 自己終了するために />
で閉じてしまうと、「現在のスキーマでは、この要素の自己終了はできません。終了スラッシュを削除してください。」というメッセージが表示されます。
Expression
Webでは、DOCTYPE宣言の前に文字を入力すると、現在のスキーマを読み取ることができなくなります。結果として、IE6互換モードとして認識されてしまいます。ちなみに、DOCTYPE宣言の前に1文字でも入力しても、以下の図のように同じ結果となります。

状況
この問題は、マイクロソフト社がExpression Webの問題として認識しています。
(実は、マイクロソフト社がW3CのXHTMLに関する仕様書を誤訳した、らしいです・・・)
現在のところ、残念ながら回避策はありません・・・。
回避策としては、セカンダリスキーマを、現在のスキーマにセットします。
Expression Webの初期設定では、互換IE6モードとして設定されていますので、その設定を変更します。
- [ツール]→[ページ編集オプション]をクリックします。
- [ページ編集オプション]ダイアログボックスの[作成]タブを開きます。
- [セカンダリスキーマ]のプルダウンより、現在のスキーマに設定します。「XHTML 1.0
Transitional」の場合は、下の図のようにセカンダリスキーマを「XHTML 1.0
Transitional」に変更して、[OK]ボタンをクリックします。


