www.wanichan.com

Web > Expression > FAQ > DOCTYPE宣言の前に文字入力すると、現在のスキーマの判別ができなくなる問題について

DOCTYPE宣言の前に文字入力すると、現在のスキーマの判別ができなくなる問題について

最終更新日:2011/04/23 23:56:23
改訂バージョン:1.6
  • このエントリーをはてなブックマークに追加

概要

コードビューにおいて、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文字でも入力しても、以下の図のように同じ結果となります。
IE6互換モードとして認識

▲Page TOP

状況

この問題は、マイクロソフト社がExpression Webの問題として認識しています。
(実は、マイクロソフト社がW3CのXHTMLに関する仕様書を誤訳した、らしいです・・・)
現在のところ、残念ながら回避策はありません・・・。

回避策としては、セカンダリスキーマを、現在のスキーマにセットするか、最新バージョンのExpression Webにアップグレードします。

Expression Webの初期設定では、互換IE6モードとして設定されていますので、その設定を変更します。

  1. [ツール]→[ページ編集オプション]をクリックします。
  2. [ページ編集オプション]ダイアログボックスの[作成]タブを開きます。
  3. [セカンダリスキーマ]のプルダウンより、現在のスキーマに設定します。「XHTML 1.0 Transitional」の場合は、下の図のようにセカンダリスキーマを「XHTML 1.0 Transitional」に変更して、[OK]ボタンをクリックします。
    ページ編集オプション

対象となるバージョン

  • Expression Web 2
  • Expression Web

備考

Expression Web 3以降では、この問題が修正されています。

スポンサーリンク
INDEX
  • このエントリーをはてなブックマークに追加

コメント

▲このページのトップへ