匿名質問者

dl要素直下のdiv要素にdt+dd+dt+ddのようにdtとddを複数並べるとバリデーターでエラーになるのはなぜですか。

https://developer.mozilla.org/ja/docs/Web/HTML/Element/dl
「名前と値のグループを <div> 要素で包む」の項目でも個数については触れられていません。
バリデーターがエラーを出す根拠を知りたいです。

例)この書き方だとバリデーターでヤクルトのdtにエラーが出てしまいます。
```
<dl>
<div class="hokkaido">
<!-- 1つ目の項目 -->
<dt>日本ハム</dt>
<dd>札幌ドーム</dd>
</div>

<div class="kanto">
<!-- 2つ目の項目 -->
<dt>巨人</dt>
<dd>東京ドーム</dd>

<!-- 3つ目の項目 -->
<dt>ヤクルト</dt>
<dd>神宮球場</dd>
</div>
</dl>
```

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:
  • 終了:2019/11/08 17:12:30

ベストアンサー

匿名回答2号 No.2

https://html.spec.whatwg.org/multipage/grouping-content.html#the-dl-element

Name-value groups may be terms and definitions, metadata topics and values, questions and answers, or any other groups of name-value data.
...
In order to annotate groups with microdata attributes, or other global attributes that apply to whole groups, or just for styling purposes, each group in a dl element can be wrapped in a div element. This does not change the semantics of the dl element.

dt : name
dd : value
name と value は複数あっても良いと書いてあるけれど、あくまでも name と value がペアになってて name-value group。

validater がダメ出しをしているのは、複数の name-value group がひとつの div で wrap されているからでしょう。

<dl>
<div class="hokkaido">
<!-- 1つ目の項目 -->
<dt>日本ハム</dt>
<dd>札幌ドーム</dd>
</div>

<div class="kanto">
<!-- 2つ目の項目 -->
<dt>巨人</dt>
<dd>東京ドーム</dd>
</div>    <!-- ★ひとつの name-value group を div で wrap する -->

<!-- 3つ目の項目 -->
<div class="kanto">
<dt>ヤクルト</dt>
<dd>神宮球場</dd>
</div>
</dl>
他4件のコメントを見る
匿名回答2号

だとすると、dt+dt+dd+ddの例が通るのはなぜなのでしょう?


https://html.spec.whatwg.org/multipage/grouping-content.html#the-dl-element

A name-value group consists of one or more names (dt elements, possibly as children of a div element child) followed by one or more values (dd elements, possibly as children of a div element child),


Validater を気にするなら、規約を読もうぜ。
無視するという流派もあるけど、Validater の結果が気になる方が正しいと思うので。

2019/11/08 21:24:08
匿名質問者

最初に読んでるんですけど、何度読んでも順序については触れられていなかったので長らく意味がわからなかったのです。
複数のdtが「同じ意味の」複数のdtである必要があったと分かったので、やっと理解出来ました。

2019/11/09 14:57:17

その他の回答1件)

匿名回答1号 No.1

<div>
 <dt>…</dt>
 <dd>…</dd>
 <dd>…</dd>
</div>

としている例はある。
https://momdo.github.io/html/grouping-content.html#the-dl-element

すると、文法以前の問題として、dtとddそれぞれの役割というか関連性というか、
そのあたりを無視しているところがそもそもの間違いなんじゃとの疑問が生じるね。

https://webliker.info/13381/#toc_2

(補足:HTML4.01の「定義リスト」(definition list)から名称が変わり)

html5からそれぞれ

・dl(description list)= 説明リスト
・dt(description term)= 説明する言葉
・dd(definition / description)= 定義文 or 説明文
というように「説明リスト」へとタグの持つ意味に変わり用途の幅が広がりました。


descriptionは説明・解説
listは一覧
termは用語
definitionは定義

だから

dl:説明(解説)一覧
dt:説明(解説)用語
dd:定義/説明(解説)

という役割が与えられていないといけないわけで、

解説用語「日本ハム」の定義あるいは説明が「札幌ドーム」であり、
解説用語「巨人」の定義あるいは説明が「東京ドーム」であり、
解説用語「ヤクルト」の定義あるいは説明が「神宮球場」である。
というのは何か変じゃないですか?となる(要するに構造が)。

<dt>日本ハム</dt>
<dd>ホーム球場は札幌ドーム</dd>
とかなら分かるけど。

そして構造的に正しく記述した際に、
複数のdtがひとまとまりのグループになる事はありえない、
みたいな意見がワーキンググループの間で出たのかもね。
中の人じゃないんでこれが正解かどうかは分からないんだけど、
見た目だけを重視して要素の意味を無視するのであれば、
それこそ他の要素を使ってもいいんじゃないの?とか思う。

他2件のコメントを見る
匿名回答1号

> テキスト部分は例なので、このdlの前に<h1>本拠地</h1>みたいなものがあるとでも思ってください。

ですと、

<ul>
 <li>札幌ドーム</li>
 <li>東京ドーム</li>
 <li>神宮球場</li>
</ul>

ではないでしょうか。
意味の合わない構造に無理やり押し込もうとするのが問題なのでは?という事。

ちなみに、

Authors:著者
Editors:編者

なので下記の例は表現が違うだけで意味はほぼ同じです。

2019/11/08 16:07:47
匿名質問者

コードの書き方ありがとうございます。
例が悪いようなんですが、知りたいのは中身ではなく、なぜエラーになるのかなので、内容のことは置いてください。

2019/11/08 16:38:18
匿名質問者

質問者から

匿名質問者2019/11/12 17:45:04

>匿名回答1号さん

どうしてもコード書けないので全角にします。

テキスト部分は例なので、このdlの前に<h1>本拠地</h1>みたいなものがあるとでも思ってください。

その上で、本家が

https://momdo.github.io/html/grouping-content.html#the-dl-elemen...

```

<dl>

<div>

<dt> Authors </dt>

<dt> Editors </dt>

<dd> Robert Rothman </dd>

<dd> Daniel Jackson </dd>

</div>

</dl>

```

この形は例示してるんです。

順序が違うだけでエラーになることが解せなくて。

今までのdlの書き方で言うなら、dt+dt+dd+ddのほうが変則だと思うし、

グルーピングとしてもわかりにくいように思うんで、ここの理屈がわからないんです

匿名回答2号 No.2

ここでベストアンサー

https://html.spec.whatwg.org/multipage/grouping-content.html#the-dl-element

Name-value groups may be terms and definitions, metadata topics and values, questions and answers, or any other groups of name-value data.
...
In order to annotate groups with microdata attributes, or other global attributes that apply to whole groups, or just for styling purposes, each group in a dl element can be wrapped in a div element. This does not change the semantics of the dl element.

dt : name
dd : value
name と value は複数あっても良いと書いてあるけれど、あくまでも name と value がペアになってて name-value group。

validater がダメ出しをしているのは、複数の name-value group がひとつの div で wrap されているからでしょう。

<dl>
<div class="hokkaido">
<!-- 1つ目の項目 -->
<dt>日本ハム</dt>
<dd>札幌ドーム</dd>
</div>

<div class="kanto">
<!-- 2つ目の項目 -->
<dt>巨人</dt>
<dd>東京ドーム</dd>
</div>    <!-- ★ひとつの name-value group を div で wrap する -->

<!-- 3つ目の項目 -->
<div class="kanto">
<dt>ヤクルト</dt>
<dd>神宮球場</dd>
</div>
</dl>
他4件のコメントを見る
匿名回答2号

だとすると、dt+dt+dd+ddの例が通るのはなぜなのでしょう?


https://html.spec.whatwg.org/multipage/grouping-content.html#the-dl-element

A name-value group consists of one or more names (dt elements, possibly as children of a div element child) followed by one or more values (dd elements, possibly as children of a div element child),


Validater を気にするなら、規約を読もうぜ。
無視するという流派もあるけど、Validater の結果が気になる方が正しいと思うので。

2019/11/08 21:24:08
匿名質問者

最初に読んでるんですけど、何度読んでも順序については触れられていなかったので長らく意味がわからなかったのです。
複数のdtが「同じ意味の」複数のdtである必要があったと分かったので、やっと理解出来ました。

2019/11/09 14:57:17

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません