
HTMLを記述する際に文書構造を明確に…と考えています。
見出しにはHタグ、本文にはPタグ、リストにはliなどなど。
ある書籍でbody直下にテキストを配置するのはいけない、と書いてありました。テキストに意味付けがなされていないから、というようなことが理由として書いてありました。
そこで思ったのですが、divはもともと意味をなさないブロック要素ですが、この直下にテキストを配置すると、このテキストは文書構造上意味を持たないものになって、文法上間違っているのでしょうか?
今のところ、
<div><p>テキスト</p></div>
のように、pで意味付けをするのが正しいのかな、と考えていますが、W3Cのホームページではdiv直下にテキストを配置しているものがありました。
皆さんのご意見を伺いたいです。
div直下のテキストは正しいのか、間違っているのか、どうでもいいのか?

No.3ベストアンサー
- 回答日時:
私は単純にDOCTYPE宣言が
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
なら
<!ELEMENT BODY O O (%block;|SCRIPT)+ +(INS|DEL) -- document body -->
となっていますのでテキストはbodyの子供要素になれないと解釈しています。
そこで%blockを見ると
<!ENTITY % block "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT | BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">
となっていますのでdivはbodyの子供要素になることができると思っております。
同様にdivを見ると
<!ELEMENT DIV - - (%flow;)* -- generic language/style container -->
となっていて%flowは
<!ENTITY % flow "%block; | %inline;">
です
%inlineは
<!ENTITY % inline "#PCDATA | %fontstyle; | %phrase; | %special; | %formctrl;">
ですからdivの子供要素として#PCDATAが出現できるからテキストを書くことができると思っております。
ご回答ありがとうございます。
やっぱりDTDが説得力ありますね。
ただ、
<div>
<p>テキスト</p>
<p>テキスト</p>
<p>テキスト</p>
テキスト
</div>
とするのはおかしいですよね?DTD的には問題ないのかもしてませんが・・・。
No.8
- 回答日時:
>#4補足質問
id,classについてはUKYさんが補足されているので省略します。
この場合について。
たとえばこれがメニューに対する補足(supplement)なら、該当の部分は
<div id="menu_supplement">テキスト</div>
もしくは
<div id="menu_supplement"><p>テキスト</p>...</div>
のようにするのが良いと思います。こういうとき<p>を使うか否かは、僕はそのテキストの長さで決めています。ある程度長ければ段落の数だけの数の<p>を使い、1~2文程度ならそのまま書いてしまいます。
(そんな人はいないと思いますが)たくさんのWebページから段落だけを抜粋しているような人がいた場合、「拾われるべき/拾われるべきでない」で使う使わないを決めるのもいいでしょう。
No.7
- 回答日時:
> idやclassは単にデザイン指定のために使用するものだと思っているのですが・・・。
あ、それは全然違います。
確かに id や class はデザイン指定のために使われることが多いですが、それだけが id/class の使われ方 (≠使い方) ではありません。
(そもそも本来の HTML にはデザインのための要素や属性というものはありません。「id/class がスタイルシートに使われる」ことはありますが、「スタイルシートのために id/class を付ける」のは本末転倒であって良い HTML の書き方ではありません。)
> idやclassで意味付けになるのでしょうか?
P や BLOCKQUOTE のように直接的な意味づけはできませんが、id/class でも間接的にある程度意味づけができる、と私は思います。
大まかにいうと id は名前付け、class はグループ分けのために使うものですが、その名前やグループが何らかの意味を表しているならば、id/class によって意味づけがされていると考えることは出来ると思います。
参考URL:http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401 …
No.6
- 回答日時:
「div直下のテキストは正しいのか、間違っているのか、どうでもいいのか?」と質問なさっているのだから、DTD がどうとかいう話をしてもしょうがないと思うんですよ。
構文論の話じゃなくて意味論の話をしないと。といっても、私が書こうとしたことは既に volmocanon
さんがほとんど述べられているのですが
ご回答ありがとうございます。
DTDの話が出てくることは予想の範疇なので、構文論でも私は構わないと思っています。むしろ構文論=意味論だとも思いますので。

No.5
- 回答日時:
なにか勘違いされている方が若干1名くらいいますが、私はdivの直下に#PCDATAが出現させることとbody直下に#PCDATAを出現させない理由を最も簡単に書いただけです。
No.4
- 回答日時:
具体的に例を挙げると、DHTMLで作った自作のツールチップなどにdiv直下の#PCDATAは現れるかもしれません。
divは意味をなさないブロック要素ですが、意味が無いならば何のために用意されているのかというと、HTMLに無いブロック要素を記述するためです。
意味づけのためにも、要素にはid属性やclass属性を指定するようにしましょう。(これはspan要素にも言えることです。)
<div><p>text text text ...</p></div>
はDTD的には正しいですが、divに文書の構造としての意味があり、今は段落が一つしか無いのでこのような構造になっている等の理由が無いならば
<p>text text text ...</p>
とするのが良いでしょう。divは段落ではありません。
まとめると、divにid属性やclass属性を付けて意味付けをすればOKかと思います。ただ、既存のタグで済ませられないかどうか、まず考えてください!
>#3
DTDは*最低限*守るべき規則であって、極論ですがDTDにだけ従えばいいのなら
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
"http://www.w3.org/TR/html4/strict.dtd">
<title>test</title>
<h1>H</h1>
<h2>e</h2>
<h3>l</h3>
<h4>l</h4>
<h5>o</h5>
なんてのも正しいHTML文書です。
参考URL:http://www.asahi-net.or.jp/%7Esd5a-ucd/rec-html4 …
この回答への補足
>id属性やclass属性を付けて意味付けをすれば
idやclassで意味付けになるのでしょうか?
idやclassは単にデザイン指定のために使用するものだと思っているのですが・・・。
ちなみに、普段はdivを
<div>
<h2>メニュー</h2>
<ul>
<li><a href="">リンク</a></li>
<li><a href="">リンク</a></li>
<li><a href="">リンク</a></li>
</ul>
</div>
のように使用しています。もちろん「まとまり」を作るためです。これにテキストを追加するとしたら
<div>
<h2>メニュー</h2>
<ul>
<li><a href="">リンク</a></li>
<li><a href="">リンク</a></li>
<li><a href="">リンク</a></li>
</ul>
テキスト
</div>
と記述するのはおかしいな、と思ったので今回のような質問をしました。上記では<p>テキスト</p>とすべきかと。
No.1
- 回答日時:
↑ここのサイトに行けば、構文チェックしてもらえます。
かなり厳しいので、100点は絶対ありえないと思ってください。
参考URL:http://openlab.ring.gr.jp/k16/htmllint/htmllint. …
ご回答ありがとうございます。
ご提示いただいたサイトはよく使用していて、100点が出るように作成しています。
<div>テキスト</div>でも減点にはなりませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS HTMLのdlとul どちらが正しいと思いますか 3 2023/02/23 11:20
- JavaScript 読み込んだQRコードをフォームに受け渡したい 1 2023/05/18 11:18
- JavaScript セレクトを全て選択されていないと、文字によるエラーメッセージを表示させるコードを調べています 2 2023/06/22 15:48
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- HTML・CSS サルワカさんの吹き出しのスタイルシートについて。 https://saruwakakun.com/h 2 2022/10/28 22:55
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- Excel(エクセル) テキストの背後にあるオブジェクトとは 3 2023/01/03 20:22
- HTML・CSS PCサイズで赤い画像2つと、青い画像2つがそれぞれ横に2つずつ並んでいるのですが、これをスマホサイズ 5 2022/04/11 12:01
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
<div id="container">の使いか...
-
htmlのolやulなどlistにtitleや...
-
CSSを使って定型文を挿入できま...
-
要素間、要素内に隙間が空く
-
3カラムのサイドバーの右側が表...
-
ブートストラップを使ったサイ...
-
HTMLのJIS規格について
-
インラインフレームのページ内...
-
HTMLに同じコードを一括挿入
-
グラフィックス
-
【html】iframeを使用したmp4の...
-
検索結果の箇所にaltタグの内容...
-
hタグを使わずに小見出し
-
htmlのブラウザごとの表示について
-
<DIV> と </DIV> の間が空です。
-
ローカルとWeb上で見え方が違う...
-
コピーライト下・フッター一番...
-
2段組レイアウト時に意図しな...
-
floatを使った時のブラウザでの...
-
改行がしたいのですが、うまく...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
htmlのolやulなどlistにtitleや...
-
HTML属性での「""」 「''」違い
-
html の divとtable の役割
-
<div id="container">の使いか...
-
ヘッダーとフッターだけ背景を...
-
1時間30分を簡単に表したいで...
-
スペースを使わず文字位置を揃...
-
div要素が重なってします
-
divの中に外部のHTMLを埋め込む
-
複数のボタンを等間隔に、かつ...
-
min-heightとheightの違いについて
-
セクションをdivで囲むと見出し...
-
htmlでdivをなるべく使わないで
-
要素間、要素内に隙間が空く
-
ブログのサイドバーが下にくる
-
body>div{}の意味を知りたい
-
スライド部分のリンクが貼れな...
-
画面を縮小するとカラムが落ち...
-
htmlの見出しタグ(<h1>)の次...
-
インラインフレームのページ内...
おすすめ情報