- ベストアンサー
DOCTYPE宣言のURLって何?
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> このDOCTYPE宣言ですが "http://www.w3.org/TR/html4/loose.dtd" が入っているのと入ってないのとで、若干表示に違いが出てくることがあります。今やろうとしていること(長くなるので省略)は、このURLを入れないほうが思った結果になるのですが、なんとなく漠然と「より厳密にHTMLの仕様を定義づける記述」だと思ってたので安易に削除してしまって良いものか躊躇しています。 べつに省略してもたいして問題ないとは思うんですが、そもそもこのURLって何なのですか?細かく取り決めみたいなのが書いてありますが、これを宣言に加えるか加えないかで表示に違いが出るということは、前半の !DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" のさらに細密な定義ということなのでしょうか。そうだとしたら別の定義のURLもあるのですか? 詳しいことをご存知の方がおられましたら教えてください。 ※環境はXPpro SP2、エディターはHTMLproject2、ブラウザはIE6、FF1.5です。まあ見られる方の環境は様々なのでウチのを言っても詮無いことですが一応。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
とりあえず、最近のブラウザではDOCTYPE宣言を <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> とするか、もしくは全く入れないと「後方互換モード」という古いブラウザとの互換性を考えたレンダリングモードになり、 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> と記述すると、「標準準拠モード」というW3Cの定める標準に沿った正しい形でのレンダリングモードになるという違いがある。 (具体的にはブラウザ依存 更にStrict、Transitionalでの違いもあるけど割愛。 なるべくなら「標準準拠モード」でやるのがベター。 標準じゃないとIEは特にCSSのバグに悩まされる事が多いので。
その他の回答 (2)
http://www.w3.org/TR/html4/loose.dtd http://www.w3.org/TR/html4/strict.dtd http://www.openwave.com/DTD/xhtml-basic.dtd http://www.openwave.com/DTD/xhtml-mobile10.dtd http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-frameset.dtd http://www.wapforum.org/DTD/xhtml-mobile10.dtd http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd http://www.w3.org/TR/xhtml-basic/xhtml-basic10.dtd http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd i-xhtml_4ja_10.dtd i-xhtml_4ja_10.dtd i-xhtml_4ja_10.dtd xhtml-basic10-plus.dtd 私が知っている限りでも結構いっぱいありますね。 詳しいことは下の4つ以外は内容が見れますので読めば解ると思います。 下の4つはドコモのページとボーダフォン(存在しないとは思います)を見ると解りますよ。
お礼
たくさんあるんですね。参考になりました。 とりあえず一番上のやつは有無の意味は調べて分かりました。 ありがとうございました。
まず、大手企業のサイトだからとか、web関連のサイトだから100%正しいとは限りません。実際とほほさんとこも、サイトの内容はさておき、htmlの中身はお手本にできるようなものではないと思うし。 PUBLICの後のダブルクォーテーションで囲まれた部分は公開識別子。その後のURLはシステム識別子と言って、web上でのDTD(仕様書)の在処です。システム識別子がある方がより丁寧と言ったところでしょうか。htmlでは省略してもいい部分ですが、xhtmlの場合はシステム識別子まで書く必要があった気がします。 htmlは人間だけが見るものではなく、コンピューターも見るものです。コンピューターはDOCTYPE宣言を見て、htmlのバージョンを判断します。言わば自己紹介みたいなもんですね。DOCTYPE宣言は必須ではないですが、書いた方がいいかなと思います。 ただし、例えばHTML 4.01 Strictで書く場合、宣言を書いたからHTML 4.01 Strictで書くのではなく、書いた文書がHTML 4.01 Strictに適した内容だからHTML 4.01 StrictのDOCTYPE宣言を書くことが出来る、というのが正しい流れです。 DOCTYPE宣言を書くことよりも、DOCTYPE宣言が書けるような、まともなhtml文書を書くのが大事だということですね。 表示が変わる件については「DOCTYPEスイッチ」で検索すればいろいろ出てきます。
お礼
いや大企業のサイトやとほほさんのサイトが模範サイトだと思っているわけではなく、長いものに巻かれれば8割か9割ぐらいは世間的に「まあ良いんじゃない?」と概ね思ってもらえる形にとりあえずはなるかもしれない、という形優先型初心者の軽いノリだと思ってください(笑) 宣言よりも文書ありきで、文書の内容を宣言によって知らしめるという考え方はとても参考になりました。 なんとなく真似事で宣言を書いても意味が無いということですね。
お礼
URL付きは標準準拠モードでの表示になるのですね。 「標準準拠」であることからしてこのモードで書くのが一番良いと思うんですが、企業のサイトやPC関連やWEB関連のサイトのソースを見ても宣言自体がついてなかったり、URL無しの<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">だけというパターンが多いんですよね。 とほほさんのサイト(有名なHTMLリファレンスサイト)によれば、 「HTML4.01 推奨仕様では必須と明記されていますが、 ---(中略)--- W3C(HTMLの標準化団体)の WAI ガイドラインにおける、<!DOCTYPE> の明記は [優先度2] になっていることからもわかるように、W3C自体は<!DOCTYPE> を必須とは言っていません。」 となっているようなんです。このことからも、宣言はべつになくてもいいということなんですね。 ちなみにホームページビルダー(僕が持ってるのはVer.9)のデフォルトではTransitionalのURL無しになりますね。