<dd>の正しい使い方?

[上に] [前に] [次に]
Shima [E-Mail] [HomePage] 2000/02/13(日) 06:39:31
 リスト表示で綺麗にインデントしていたページを見かけたのですが、
はたしてこの様な使い方は許されるのでしょうか?。

<ol>
  <li>うりゃ〜
    <dd>ほにゃらら
  <li>とりゃ〜
    <dd>ほにゃらら
</ol>

一応、IE5とNN2で表示を確認したのですが、

  1. うりゃ〜
        ほにゃらら
  2. とりゃ〜
        ほにゃらら

と、同じ結果になりましたが、なんとなく使っては良くない気も
しますし、凄く便利なような気もするし・・・。

でも J-PHONE J-SH02 で見たら、

  1. うりゃ〜
        ほにゃらら

        ・とりゃ〜

        ほにゃらら

になってしまったから、やっぱりこう云う使い方はダメなのかな?。
HTML仕様に詳しい方、教えて下さい。

[HomePage] 2000/02/13(日) 06:49:32
<ol>
  <li>うりゃ〜</li>
    <dd>ほにゃらら</dd>
  <li>とりゃ〜</li>
    <dd>ほにゃらら</dd>
</ol>
こう記述してみたらどうなるかな〜???

Ichi 2000/02/13(日) 07:13:36
<dd>は
<dl>直下にしか置けないことになっています。(HTML4.0 Transitional)

ひゅどる 2000/02/13(日) 07:16:34
<dd>は<dt>で括った中でしか使えないので、
残念ながらHTML的は全然正しくありません(^^;
http://www.tohoho-web.com/html/dt.htm

ってゆーか、それなら
<dl>
  <dt>うりゃ〜
    <dd>ほにゃらら
  <dt>とりゃ〜
    <dd>ほにゃらら
</dl>
でいいんじゃないんですか?

>やっぱりこう云う使い方はダメなのかな?
そもそも<dt>で定義したものの説明文を<dd>で括るワケで、
「説明文なんだからインデントした方がわかりやすいだろ」
っていうだけのことで、
インデントをしない(例えば背景色をつけたりする)ブラウザがあったって
全然不思議じゃないわけなんですね。
# ユーザスタイルシートをそういう風に使うことも出きるでしょうし)

だから、HTML文法に沿った書き方はしちゃダメという人もいますが、
厳密に言うと「とほほのWWW入門」も正しくはない部分もあるので、
やってはいけないとは言いませんが
HTMLで見栄えをコントロールしよう(例えばインデントさせよう)
とはせず、スタイルシートを使ったほうが無難なのはないでしょうか。

ひゅどる 2000/02/13(日) 07:18:59
あぁ間違えた。
しかも遅かったし。

><dd>は<dt>で括った中でしか使えないので、
<dd>は<dl>で括った中でしか使えないので、
でした。
Ichiさんの書かれている通りです。 ゴメンナサイ。

Shima 2000/02/13(日) 07:51:43
[[解決]]
><dd>は<dl>直下にしか置けないことになっています。(HTML4.0 Transitional)

 ありがとうございました。仕様的には99%そうだとは思いましたが・・・。

>ってゆーか、それなら
><dl>
>  <dt>うりゃ〜
>    <dd>ほにゃらら
>  <dt>とりゃ〜
>    <dd>ほにゃらら
></dl>
>でいいんじゃないんですか?

 確かに例文の様に短いリストであれば、<dl>の使用で問題ないと思いますが、
実際に見たリストでは長文(<li>が多い)で説明(<dd>)も多く、
番号が付いている方が明らかに見やすい(判り易い)リストだった物で・・・。

う〜ん、でも<li>の説明として<dd>を使うと云うのは、テーブルで
レイアウトするよりは、よっぽどHTML的に正しい様な気が・・・。

三原克大 [E-Mail] 2000/02/14(月) 12:58:50
>  確かに例文の様に短いリストであれば、<dl>の使用で問題ないと思いますが、
> 実際に見たリストでは長文(<li>が多い)で説明(<dd>)も多く、
> 番号が付いている方が明らかに見やすい(判り易い)リストだった物で・・・。

定義を見ると、<dt> は長文を納めやすいようにはできていませんから。

<!ENTITY % block
                "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
                 BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">
<!ENTITY % flow "%block; | %inline;">
<!ELEMENT P - O (%inline;)*            -- paragraph -->
<!ELEMENT DT - O (%inline;)*           -- definition term -->
<!ELEMENT DD - O (%flow;)*             -- definition description -->
HTML 4.01 Specification より

<dd> の中には <p> だって <h1> だって入れられますが、
<dt> は <p> と同じ、<p> の中に入れられる要素しか入れられません。
どうしても一段落を越えられません。そのつもりで定義されています。

ちなみに、
<!ELEMENT LI - O (%flow;)*             -- list item -->
なので、<li> の方がたくさんの種類の要素を入れられるようになっています。
極端な話、<li> の中に <dl><dt><dd></dl> を入れても構いません。
ブラウザで表示させると不細工になりますが。

> う〜ん、でも<li>の説明として<dd>を使うと云うのは、テーブルで
> レイアウトするよりは、よっぽどHTML的に正しい様な気が・・・。

気持は分かりますが、文法上は前者が正しいんです。

これが望ましいかどうかという話はおいてね。

Shima 2000/02/16(水) 03:21:00
>三原克大 さん
具体的な説明ありがとうございます。

>極端な話、<li> の中に <dl><dt><dd></dl> を入れても構いません。
実はこれは昔から使っていましたが、<li>の直下に<dd>を使うと云うのは
HTML生活4年間?に全く想像すらしなかったもので、もしかしたら
1%の確率で忘れられてしまった仕様(<lh>みたいな<笑)なのかな?
と考えてしまった訳です。
(だってIE5とNN2でちゃんと動作しちゃんだもん・・・)

ちなみに、司さんのアイデアの様に</li></dd>などで括っても結果は同じでした。

[上に] [前に] [次に]