Movable Type 備忘録

 XML宣言とDOCTYPE宣言について

  • Sep302006
  • Vote:
    http://bizcaz.com/archives/2006/09/30-022016.php
  • Categories: Template
  • Tags: ,
  • Social Bookmark

MovableType MEMOで配布するテンプレートは、すべてXHTML1.1で配布しています。 MovableType(ムーバブルタイプ)では、XHML1.0 Transitionalを標準としています。

テンプレート内には通常、XML宣言、DOCTYPE宣言と言われる、テンプレートがどのタイプで作られたものなのかをブラウザに教えてる定義が埋め込まれています。

ここではその、XML宣言、DOCTYPE宣言についてチョビッとふれたいと思います。

DOCTYPE宣言について

通常、テンプレート内の1行目に以下のような記述があります。 これがDOCTYPE宣言になります。

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

DOCTYPE宣言とは、ブラウザに対して「標準モード」で書かれた文書なのか、「互換モード」で書かれた文書なのかなどの、XHTML文書のバージョンを宣言しています。

  • 標準モード

    CSSの標準に準拠したモードです。

  • 互換モード

    古いブラウザでも表示できるよう対応したモードです。

一見すると「互換モード」の方がすべての(ちょっと大げさかな)ブラウザで表示できるから良さげのように思いますが、ちょっと違います。 「互換モード」は、CSS標準に準拠していない、ブラウザに依存したモードです。 なので、ブラウザによっては思わぬ表示のされ方したりします。

MovableType(ムーバブルタイプ)に限らず、ブログではHTMLファイルとスタイルシートを明確に分けてますので、テンプレートのレイアウト、デザインをするときは注意しないと、IEではレイアウトが崩れるなどといったことはよく聞く話ですね。

また、今どきのブラウザ(IE以外のモダンブラウザ)はCSS標準に準拠して表示するようになっているそうです。 でも、IE 6ではXHTML文書のテンプレートである限り「互換モード」になってしまうようです。 言いかえると、ブラウザに依存したモードなのでIE 6対応が必要になってしまう…ということです。

DOCTYPE宣言の種類について

DOCTYPE宣言にはいくつか種類があります。 以下にその種類を記します。

  • XHTML 1.0 Transitional

    HTMLとXHTMLでは、使えるタグなどが異なります。 この「XHTML 1.0 Transitional」は、XHTMLでもHTMLのタグを使ってもOKな文書形式です。 平たく言えば、どっちつかずな文書形式です。

    1. XHTML1.0 Transitional用 のXML宣言とDOCTYPE宣言
    2.  
    3. <?xml version="1.0" encoding="<$MTPublishCharset$>"?>
    4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    青い字の部分のXML宣言は必須とされています。

  • XHTML 1.0 Strict

    「XHTML 1.0 Transitional」から、さらにXHTML寄りにした文書形式です。 HTMLで問題なかったタグなどが、この文書形式では使えなくなるタグなどがあります。

    1. XHTML1.0 Strict用 のXML宣言とDOCTYPE宣言
    2.  
    3. <?xml version="1.0" encoding="<$MTPublishCharset$>"?>
    4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

    青い字の部分のXML宣言は必須とされています。

  • XHTML 1.0 Frameset

    フレームを使用するときに宣言すると都合がいい文書形式です。 わたしは使ったことがありません。

    1. XHTML1.0 Frameset用 のXML宣言とDOCTYPE宣言
    2.  
    3. <?xml version="1.0" encoding="<$MTPublishCharset$>"?>
    4. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
    5. "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">

    青い字の部分のXML宣言は必須とされています。

  • XHTML 1.1

    MovableType MEMOで配布しているテンプレートで使用している文書形式です。 厳密なXHML書式を意識した文書となります。

    1. XHTML1.1用 のDOCTYPE宣言
    2.  
    3. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

XHTML1.0、1.1は文書のバージョンを表しています。 XHTML1.0のTransitional、Strict、Framesetはサブバージョンを表しています。

XHTML1.0のXML宣言ですが、これを記述すると IE 6 では必ず「互換モード」となるようです。 W3Cでは必須定義ですが、「互換モード」にしたくない場合にはXML宣言を削除するといいですよ。

XML宣言の注意点

ブログをPHP化してる人はXML宣言をそのまま使うことができません。 以下のように変更する必要があります。

  1. 通常のXHTMLのページ
  2. <?xml version="1.0" encoding="<$MTPublishCharset$>"?>
  3.  
  4. PHP化したXHTMLのページ
  5. <?php echo('<?xml version="1.0" encoding="<$MTPublishCharset$>"?>') ?>

元のXML宣言を、青い字の部分で囲みます。
これはPHP化したすべてのテンプレートで変更する必要があります。

長々とつづりましたが、必ずしも形式に拘る必要はなく、コンテンツ重視、デザイン重視でも問題ありません。 それにブログってある意味、自己満足的なところがあると思いますし、訪問者さんはそんな形式など気にしないと思いますので。

ざっとXML宣言、DOCTYPE宣言について触れましたが、もっと詳しく知りたい人はたくさんのサイトでXML宣言、DOCTYPE宣言について説明されてますので、そちらを参考にするといいですよ。

 Trackback Pings(1)

from CSS Lecture

xml宣言、DOCTYPE宣言(文書型宣言)についての解説をします。

 Comments(0)

No comments found.

 Post a Comment

 

コメント用フィード