はじめまして、いまWEBの学校でHTMLを勉強中です。テキストなどではDOCTYPE宣言を記述するように書かれていますが、宣言は必要ないと教わりました。
本来書いたほうがいいのだということはわかりますが、なぜ書かなくてもよいのかわかりません。
また、実際にHTMLを書く仕事をされている方もDOCTYPE宣言は記述しないのが普通なのでしょうか?
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (3件)

DOCTYPE 宣言はタグではなく、マーク宣言と呼ばれています。



HTML の勉強をしているのであれば、どのルール (バージョン) で書いているのか
明確にするためにも必ず記述し、それに沿った文法で記述することをおすすめします。

font 要素や align="center" 属性などの使わない方がよいとされる要素を使うのであれば、
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
と記述しておくといいと思います。

WEB の学校で宣言は必要ないと教えているようですが、正しい文法が軽視されているのはとても残念ですね。
正しい HTML 文法に興味があるのでしたら、Another HTML-lint
http://openlab.ring.gr.jp/k16/htmllint/htmllint. …
などでチェックしてみることをおすすめします。

なお、Internet Explorer 6.0 以上、Netscape 6.0 以上などでは、DOCTYPE 宣言によって表示の仕方が異なります。

DOCTYPE 宣言に関する詳細は下記 URL をご覧ください。
http://www.ne.jp/asahi/minazuki/bakera/html/sgml …
http://www.kanzaki.com/docs/html/htminfo15.html# …

参考URL:http://www.kanzaki.com/docs/htminfo.html
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます。
参考URLを早速拝見しました。
やはり、DOCTYPEは必要なものだということがよくわかりました。
ただ、記述しなくてもIEやNNなどのブラウザが勝手にHTMLを解釈して表示してしまうものなんだということもわかりました。
プロが書くものである限り、記述するべきものなんでしょうね。
ありがとうございました。

お礼日時:2002/02/20 12:54

ちょっと誤解されているようなので、少しだけ。



>ただ、記述しなくてもIEやNNなどのブラウザが勝手にHTMLを解釈して表示してしまうものなんだということもわかりました。

この表現は、正確ではありません。最近のブラウザ(IE6、NN6等)は表示モードを2種類持っています。DOCTYPEをどう書くか(=どのバージョンのHTMLで記述するか)によって、実際の表示が変わります。DOCTYPEを書かない場合の表示方法も決められています(互換モードというモード)。

確かに勝手に表示されるのですが、表示したいように表示できなくなる危険性もあります。
書かない場合も、一定のルールで解釈してくれるだけであって、CSS2などを使ってみれば分かりますが、表示が大きく変わる部分もあります。

学校で学んでいらっしゃり、今後そういったお仕事をする可能性もあるのであれば、正しく理解しておく必要があると思います。私はデザイナーではなく、デザインを発注する立場で仕事をしてきた人間ですが、DOCTYPEを理解していない人には発注しないと思います。

まぁ、そういったことにこだわらない人がいるのも事実ですし、一般化するつもりはありません。お勉強、頑張ってください。
    • good
    • 0
この回答へのお礼

ありがとうございます。

将来的にはWEBの仕事に従事したいと思っております。
実際には勉強を始めたばかりですのでとまどってばかりですが、さまざまなソースから情報を得て学習していこうと思います。

がんばります。

お礼日時:2002/02/20 16:28

METAタグの「Content-Type」ではなく、<!DOCTYPE~>の方ですよね?


使ったことないですね~。プライベートでも仕事でも。

書かない理由は、
1.書かなくてもなんら問題ないタグだから。
2.どのバージョンのHTMLに準拠しているなど、把握して書いてないから。
3.準拠しているHTMLのバージョンなんて、大した事ではないから。
4.他のプログラム言語と違って、HTMLの場合バージョンが変わっても特に大きく変わることはないから。(例えばまったく使えなくなるタグができるとか、エラーになるとかないから困らない)
とまぁ、こんなもんかな。

HTMLのバージョンなんて、ソースで操作するものではなく、ブラウザで勝手に解釈してくれるものなので、必要ないんだと思います。
    • good
    • 0
この回答へのお礼

早速のお返事ありがとうございました。実際にお仕事をされている方からの意見で大変参考になりましたありがとうございました。

お礼日時:2002/02/20 12:49

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qhtml 「DOCTYPE記述」について

こんにちは。

タイトルの件ですが

html4.01 Transitionalで宣言する場合、

<1>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
のように記述しますね。

上記に「http://www.w3.org/TR/html4/loose.dtd」を付け加えて

<2>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">とも書きますね。

<1>と<2>差異は何でしょうか?

<1>はスタンダードモード、<2>は互換モードであるとは理解していますが、そうだとすれば、<2>はStrictで宣言した場合と同じ結果になるのでしょうか?

詳しい方、教えていただけますか。
どうぞ宜しくお願いします。

Aベストアンサー

再び失礼します。 補足読みました。

まず、システム識別子を省略したHTML文書は、正しいHTML文書ではなくなるかどうかという疑問に付いて。
これは、DOCTYPE宣言で明示したDTDに則って記述してあれば、システム識別子を省略しても、正しいHTMLと言えると思います。 HTMLでは、システム識別子は省略することが可能です。
HTMLにおいては、DTDはW3Cによって規定されていて、それが個別に異なることはないため(たとえばDTD HTML 4.01 Transitionalで宣言を行った場合は、その参照するべきDTDはW3Cが規定したものただ一つですので、他のバリエーションはありません)、DTDがどこに保管されているのかを宣言しなくても、参照するべきDTDを特定することができます。 システム識別子は、宣言したDTDの定義をまとめたものがどこにあるのかを明示するものですので、HTMLの場合はこのシステム識別子を省略することができるはずです。

> デザインを重視したウェブページで、W3Cの仕様をきちんと守れなかったら
> (守る自信がなかったら)、「システム識別子」は省いたほうが安全とい
> うことになるのでしょうか。

この点については、どちらがどうとはいえないところがあります。 確かに、W3Cの仕様に準拠した記述法に自信がない場合には、互換モードで解釈された時に狙い通りの表示を「一発で出す」ことが期待できる、システム識別子を省いた文書の方が良いかもしれません。 ただし、そのような場合でも、逐一表示確認をして狙い通りになるように適宜修正を加える作業を積み重ねれば、システム識別子を省略せずとも問題のない標準モードで解釈されるHTML文書を作ることが可能と思います。
デザインを整えるという観点から行くと、ブラウザの表示モードの違いで基準とするものが変わってしまうわけで、システム識別子を省くことで安全マージンを確保できるとは、一概にはいえないと思いますよ。
デザイン重視のページで複数の環境において共通して狙い通りのデザインを確保する上では、いずれのモードで表示させるか(システム識別子を省くかどうか)よりも、そのモードで狙い通りの表示を得られているのかを綿密に確認・修正する作業ができているかが、一番重要と思います。

> やはり省いても良い「システム識別子」を(わざわざ)つけちゃって問題
> を起こすよりは、最初からつけないほうが安全なのでしょうか。

大手企業の例を引かれていますが、これはデザイン側の技術的問題というよりはむしろ閲覧者への配慮の問題で、古いバージョンのブラウザを利用しているユーザへの配慮という側面が強いと思われます。
企業などは、不特定多数の閲覧者に情報を提供することを目的としてページを公開しています。 このとき、企業としては、閲覧している人の環境の差異によって正常に表示されなくなるリスクを負うのは、ネット上で不特定多数の人々に向けて情報公開をする、という目的に反することになります。 閲覧する人が、必ずしも最新の仕様に沿ったブラウザを利用しているとはいえません。 それを前提とすると、最新のブラウザ向けの標準モードでのみ正常に解釈される記述法をとった場合、標準モードに相当するような解釈のできない古いブラウザでは、レイアウトが崩れてしまう可能性があります。 そのような事態を避けるために、古いブラウザで閲覧されても狙い通りのレイアウトで表示されるように、後方互換モードで対処しているのだと思います。
この点については、公開側として閲覧者の状況をどのように想定するのかの問題になると思います。 標準モードに相当する解釈のできないブラウザ(IE5以前、Netscape4.xx以前など)がいまだ利用されている可能性が高いと判断するのであれば、後方互換モードで解釈されるようにしておいたほうが、同一のHTML文書でどのブラウザでも同じレイアウトを確保する上ではより堅実だと思います。 もし、そういったブラウザを過去のものと考えるなら、標準モードに移行していった方が、のちのちのことを考えると良いかも知れません。

少々曖昧な話になりましたが、参考になれば…

再び失礼します。 補足読みました。

まず、システム識別子を省略したHTML文書は、正しいHTML文書ではなくなるかどうかという疑問に付いて。
これは、DOCTYPE宣言で明示したDTDに則って記述してあれば、システム識別子を省略しても、正しいHTMLと言えると思います。 HTMLでは、システム識別子は省略することが可能です。
HTMLにおいては、DTDはW3Cによって規定されていて、それが個別に異なることはないため(たとえばDTD HTML 4.01 Transitionalで宣言を行った場合は、その参照するべきDTDはW3Cが規定したもの...続きを読む

QDOCTYPE宣言によりmarginがきかない

いつもお世話になります。

やりたいことは、divタグの領域を左右に同じ幅のマージンとなるようにしたいのですが、DOCTYPE宣言を入れたのと入れていないので、マージンが正常に働いてくれません。
例えば以下のコードがあったとします。

<html>
<head>
</head>
<body>
<div style="width: 100%; padding 5px; margin: 10px 20px; border: solid 2px black;">aaaaa</div>
</body>
</html>

これをIE8で開いてみると、左右20pxでマージンをとってくれます。これに、

<?xml version="1.0" encoding="windows-31j" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
・・・(省略)・・・

を追加して開いてみると、左はマージンをとっているのですが、右は端っこまでいってしまいます。
自分なりに調べてみて、DOCTYPE宣言により、標準準拠モードと後方互換モードがある、ということを知ったのですが、ではどうすれば標準準拠モードで正しくマージンを取ることができるのか、というところまで見つけれませんでした。
どうすれば正しくマージンを取ることができるのでしょうか。

宜しくお願いいたします。

いつもお世話になります。

やりたいことは、divタグの領域を左右に同じ幅のマージンとなるようにしたいのですが、DOCTYPE宣言を入れたのと入れていないので、マージンが正常に働いてくれません。
例えば以下のコードがあったとします。

<html>
<head>
</head>
<body>
<div style="width: 100%; padding 5px; margin: 10px 20px; border: solid 2px black;">aaaaa</div>
</body>
</html>

これをIE8で開いてみると、左右20pxでマージンをとってくれます。これに、

<?xml version="1.0" encoding="windows-31j" ...続きを読む

Aベストアンサー

DTD宣言の有無で標準準拠モードと互換モードに切り替わりますがこの時、CSSの解釈が変わってしまいます。
widthとpaddingを指定した場合、標準準拠モードでは余白分ボックスの幅を拡張しますが、互換モードではボックスの幅はそのままで内側に余白を取ります。
これはheightでも同じですね。
なのでwidth(もしくはheight)とその方向に対応するpaddingを一緒に指定しないようにします。

今回の場合はwidthとpaddingを一緒に指定されていましたが、widthの値が100%でした。
ですが、これはブロックボックスであれば何も指定しない状態(width:auto;の時)でも同じ効果が得られます。
なのでwidthの指定を消すことでデザインはそのままで、解釈の違いも出なくなったと。


オススメのページです。
http://adp.daa.jp/web.html

QDOCTYPE宣言をするとstyleが適用できない

webサイト作りの初心者です。
初め、ドキュメントタイプ(DOCTYPE)の宣言を書かずに<html>タグからコードを書いていたのですが、
全体がある程度形になってから、1番上に
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
を追加し、<html>を
<html xmlns="http://www.w3.org/1999/xhtml">
に変えると、デザインが変わってしまいました。
具体的には、
<div style="height:960;">~</div>
と書いて作っていたブロックの高さが、
DOCTYPE宣言を書く前はちゃんと960になっていたのですが、
書いた後は、中に入っているコンテンツ(テキスト)の高さまで縮み、style部分の数字をいくらいじっても変わってくれません。
他にも、style属性のmargin-leftなどが適用されなくなっていました。

なぜ、DOCTYPEの宣言をするとstyleが適用されなくなったのでしょうか?
また、どうすれば適用されるようになるのでしょうか?

よろしくお願いします。

webサイト作りの初心者です。
初め、ドキュメントタイプ(DOCTYPE)の宣言を書かずに<html>タグからコードを書いていたのですが、
全体がある程度形になってから、1番上に
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
を追加し、<html>を
<html xmlns="http://www.w3.org/1999/xhtml">
に変えると、デザインが変わってしまいました。
具体的には、
<div style="height:960;">~</div>
と書いて作っていたブロックの高さが、
DOC...続きを読む

Aベストアンサー

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 標準モードですね。
 そして使われているブラウザはインターネットエキスプローラ(IE)ですね。

 IEは、ユーザーの取り込みと競合ブラウザの追い落としのために、独自のスタイルシートの解釈をしていました。そして、そのためにウェブ標準の仕様にあわせることが他のブラウザよりも遅れました。(せっかく古いIE用に作られたページが利用できなくなる)

 他のプログラムで扱うなどの必要がなければ
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
ではなくて
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
として、HTML4.01strictで作成することにされたら良いでしょう。
『HTML文書を作る場合には、この仕様における、他のDTDセットではなく strict DTD に適合する文書を作るよう推奨する。( http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html401j/conform.html#h-4.1 )』1999年HTML4.01strict
 そして、次期HTML5はHTML4.01strictの改定になります。
・XHTML1.0 transitinalは、同様に推奨されていません。
・XHTMLで作成する場合でもstrictにしましょう。

 その上で、スタイルシートも書き直すと良いです。互換モードと標準モードの大きな違いは、
・ブロックのサイズの解釈
  標準モードではpadding辺の内側です。
・text^align:centerではブロックは中央に来ません。
 などたくさんあります。

 なお、
<div style="height:960;">~</div>
 でスタイルが適用されないことはありません。HTML要素のstyle属性に書かれたスタイルは詳細度が[1,0,0,0]となり、他の部分で書かれたすべてのスタイルを上書きします。ただし、著者やユーザーが!important宣言されている場合を除く。
 文法的な間違いがあるため、この部分のHTMLが解釈されていないと思われます。
 ⇒Another HTML-lint 5 ( http://www.htmllint.net/html-lint/htmllint.html )
 の右上のDATAタブをクリックしてソースを貼り付けて見ましょう。

★サンプル HTML4.01strict
タブは_に置換してあるので戻すこと!!!
▼<DOCTYPE宣>の有無でIEによる表示の差をチェックすること
▼他のブラウザ、firefox,Chromeなどでチェックしてみる。

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html lang="ja">
<head>
_<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
_<title>サンプル0</title>
_<meta name="author" content="ORUKA1951">
_<meta http-equiv="Content-Style-Type" content="text/css">
_<link rev="made" href="mailto:oruka1951@hoge.com" title="send a mail" >
_<link rel="START" href="../index.html">
_<style type="text/css">
<!--
body{background-color:gray;}
div.header{background-color:yellow;border-color:orange;}
div.section{background-color:white;border-color:silver;}
div.footer{background-color:aqua;border-color:blue;}

html,body{margin:0;padding:0;}
div.header,div.section,div.footer{width:400px;margin:0 auto;padding:20px;border-width:30px;border-style:solid;}
div.section{height:400px;}
-->
_</style>
</head>
<body>
_<div class="header">
__<h1>タイトル</h1>
__<p>黄色い部分の幅が400px+40px、</p>
_</div>
_<div class="section">
__<h2>見出し</h2>
__<p>ここに自由な長さの文章を入れてみる</p>
__<p>本文(section)の高さは400px + 40px</p>
_</div>
_<div class="footer">
__<address>&copy; ORUKA1951 2012 - 2016 All Rights Reserved mailto:*****</address>
_</div>
</body>
</html>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 標準モードですね。
 そして使われているブラウザはインターネットエキスプローラ(IE)ですね。

 IEは、ユーザーの取り込みと競合ブラウザの追い落としのために、独自のスタイルシートの解釈をしていました。そして、そのためにウェブ標準の仕様にあわせることが他のブラウザよりも遅れました。(せっかく古いIE用に作られたページが利用できなくなる)

 他のプログラムで扱うな...続きを読む

QDOCTYPE宣言の意味を教えてください!!

DOCTYPEの宣言で何を記述するかをうたっていることは知ったのですが、その中でも色々種類がありました。

特に、Transitionalやストリクト?(スペル分かりません)などあるようですが、これらは何が違うのでしょうか??

メリット・デメリット等も合わせてご存知の方おられましたら、アドバイス宜しくお願いいたします。 

Aベストアンサー

Strict,Transitional,Framesetですね。

Strictは厳格な規格です。
今まであった要素や属性が無くなっていたり、性質が変わっていたり、タグの省略を禁止したりしています。
この規格に則って記述することを推奨します。
Transitionalに比べて寿命が長い規格です。

Transitionalはゆるい規格。
古い規格や古い規格で許されていた行為(タグの省略とか)を容認します。

Framesetはフレームを使うことを宣言します。
フレームを使う場合はFramesetを宣言しなければなりません。

QDOCTYPE宣言の書き方について

例えばトラディショナルなら

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

のように表記されると思うのですが、
"http://www.w3.org/TR/html4/loose.dtd"
この部分は省略してもいいのでしょうか?

今まで「Dreamweaver MX」を使用していたのですが
これで新規ページを作るとこの部分がありません。

「Dreamweaver 2004MX」で新規ページを作ったときにこれが出てたので、
いろいろ他をみたところある方が正しいようです。

しかもこれがある時と無い時で表示が多少変わるのですが、
やっぱり入れた方がいいのでしょうか?

Aベストアンサー

"http://www.w3.org/TR/html4/loose.dtd"

これは、システム識別子と呼ばれています。W3C HTML 4.01 Transitional の文法を定義しているモノ、つまりDTDのありかを示します。

4.01は、 Transitionalだけではありません。Strictもあります。そのため、DOCTYPE宣言で、htmlのヴァージョンを明示しますが、その文法の在りかを明示するのがシステム識別子です。

付ける付けないの違い、これはブラウザに、過去の通例、慣習に従って解釈させるか、定義した文法通り(rody555さんの例の場合は、html 4.01 Transitionalの文法、仕様通りに)厳格に解釈させるか、の違いがあります。ただし、ブラウザ側は、必ず対応しているわけではありません。

対応しているブラウザの場合、システム識別子をつければ厳格モードになり、つけなければ慣習モードになります。

付けた方がよいかどうか、それは、rody555さんがお書きになる html と css 、また、No.1さんの回答の通りです。そのページが、html 4.01 Transitionalの文法、cssの仕様書通り厳格ならば、私は、付けた方が良いと思います。

また、rody555さんのサイトを訪れる方がどのようなブラウザを使っているかにもよります。DOCTYPE スイッチに対応しているブラウザばかりならば、付けた方が宜しいでしょう。

このDOCTYPE スイッチ、win IE6は対応しているようです。他、対応状況に関しては、各ブラウザのサイトなどで検索なさると出て来ると思います。

"http://www.w3.org/TR/html4/loose.dtd"

これは、システム識別子と呼ばれています。W3C HTML 4.01 Transitional の文法を定義しているモノ、つまりDTDのありかを示します。

4.01は、 Transitionalだけではありません。Strictもあります。そのため、DOCTYPE宣言で、htmlのヴァージョンを明示しますが、その文法の在りかを明示するのがシステム識別子です。

付ける付けないの違い、これはブラウザに、過去の通例、慣習に従って解釈させるか、定義した文法通り(rody555さんの例の場合は、html 4.01 Transi...続きを読む


人気Q&Aランキング

おすすめ情報