/
59.txt
714 lines (556 loc) · 28.4 KB
/
59.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
[6] [DFN[[CODE(HTMLe)[dl]] 要素型]]の [Q[dl]]
は、 [Q[definition list]] (定義並び) の略です。
[CODE(HTMLe)[dl]] は、用語 ([CODE(HTMLe)[[[dt]]]])
と説明 ([CODE(HTMLe)[[[dd]]]]) で構成します。
* 仕様書
[REFS[
- [58] '''[CITE@en-US-x-hixie[HTML Standard]] ([TIME[2017-05-25 15:13:14 +09:00]]) <https://html.spec.whatwg.org/#the-dl-element>'''
- [93] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2017-05-25 15:13:14 +09:00]]) <https://html.spec.whatwg.org/#HTMLDListElement-partial>
- [96] [CITE@en-US-x-hixie[HTML Standard]] ([TIME[2017-05-25 15:13:14 +09:00]]) <https://html.spec.whatwg.org/#the-div-element>
]REFS]
* 意味
[70] [CODE(HTMLe)@en[dl]] [[要素]]は、
零個[[以上]]の[RUBYB[名前と値の群]@en[name-value group]]で構成される[RUBYB[関連付けリスト]@en[association list]]
([RUBYB[説明リスト]@en[description list]]) を[[表現][要素の意味]]します
[SRC[>>58]]。
[FIG(railroad)[
= *
== [[名前と値の群]]
]FIG]
[71]
[DFN[名前と値の群]]は、0個[[以上]]の[RUBYB[名前]@en[name]]とそれに続く0個[[以上]]の[RUBYB[値]@en[value]]で構成されます。
[CITE[HTML Standard]] に[[適合]]する[[文書]]では、
必ず1個[[以上]]の名前と1個[[以上]]の値で構成されます。 [SRC[>>58]]
[FIG(railroad)[
= +
== 名前
= +
== 値
]FIG]
[75]
[[名前と値の群]]は、
[RUBYB[用語]@en[term]]と[RUBYB[定義]@en[definition]]、
[[メタデータ]]の話題と値、
質問と回答、
その他色々な名前と値が組になったデータに使うことができます [SRC[>>58]]。
[91]
しかし、[[対話]]の[[マーク付け]]には不適切です [SRC[>>58]]。
;; [92] [[名前と値の群]]の名前が互いに排他的であるべき (>>72)
ところ、[[対話]]は同じ人の名前が何度も登場するので、
意味的に異なる構造を持っている、という理由でしょうか。
[73]
[DFN[[RUBYB[名前]@en[name]]]]は [CODE(HTMLe)@en[dt]] [[要素]]の[[子供]]によって表され、
[DFN[[RUBYB[値]@en[value]]]]は [CODE(HTMLe)@en[dd]] [[要素]]の[[子供]]によって表されます。
[SRC[>>58]]
[74]
[CODE(HTMLe)@en[dt]] [[要素]]と [CODE(HTMLe)@en[dd]] [[要素]]は、
直接 [CODE(HTMLe)@en[dl]] [[要素]]の[F[子供]]として現れる場合と、
[CODE(HTMLe)@en[dl]] [[要素]]の[F[子供]]に含まれる [CODE(HTMLe)@en[div]]
[[要素]]の[F[子供]]に含まれる場合があります。
[CODE(HTMLe)@en[div]] [[要素]]は、
群全体に対して[[スタイル]]を指定したり、[[大域属性]]や[[マイクロデータ]]のためにまとめたりする目的で使うことができます。
[CODE(HTMLe)@en[dl]] [[要素]]の[[意味]]には影響しません。
[SRC[>>58]]
[80]
[CODE(HTMLe)@en[dl]] [[要素]][VAR[要素]]が[[表現][要素の意味]]する[[名前と値の群]]を求めるには、
次のようにします [SRC[>>58]]。
[FIG(steps)[
= [81] [VAR[要素リスト]]を、[VAR[要素]]の[F[子供]]の [CODE(HTMLe)@en[dt]] [[要素]]と
[CODE(HTMLe)@en[dd]] [[要素]]と、
[VAR[要素]]の[F[子供]]の [CODE(HTMLe)@en[div]] [[要素]]の[F[子供]]の
[CODE(HTMLe)@en[dt]] [[要素]]と
[CODE(HTMLe)@en[dd]] [[要素]]をすべて[[木順]]に並べたものとします。
= [83] [VAR[群リスト]]を、[[空リスト]]に設定します。
= [84] [VAR[要素リスト]]が[[空]]でない間、繰り返し、
== [82] [VAR[部分リスト]]を、[VAR[要素リスト]]の先頭から、
0個[[以上]]の [CODE(HTMLe)@en[dt]] [[要素]]の連続の後に
0個[[以上]]の [CODE(HTMLe)@en[dd]] [[要素]]が連続する最大の部分リスト求めた結果に設定します。
== [85] 新しい[[名前と値の群]]を、[VAR[群リスト]]の末尾に追加します。
[FIG(list members)[
: [F[[[名前]]群]] : [VAR[部分リスト]]中の [CODE(HTMLe)@en[dt]] [[要素]]の[[木順]]のリスト
: [F[[[値]]群]] : [VAR[部分リスト]]中の [CODE(HTMLe)@en[dd]] [[要素]]の[[木順]]のリスト
]FIG]
== [86] [VAR[部分リスト]]の[[要素]]を、[VAR[要素リスト]]から削除します。
= [87] [VAR[群リスト]]を返します。
]FIG]
[88]
[CODE(HTMLe)@en[dt]] [[要素]]と [CODE(HTMLe)@en[dd]] [[要素]]以外の[[内容]]は無視され、
[CODE(HTMLe)@en[dl]] [[要素]]の[[意味][要素の意味]]に寄与しません。
[89]
[CODE(HTMLe)@en[div]] [[要素]]も [CODE(HTMLe)@en[dl]] [[要素]]の[[意味][要素の意味]]に寄与しません。
[[名前と値の群]]が [CODE(HTMLe)@en[div]] [[要素]]の境界をまたがる可能性もあります。
(ただし、そのような[[文書]]は、 [CITE[HTML Standard]] の[[内容モデル]]に[[適合]]しません。)
-*-*-
[72]
1つの [CODE(HTMLe)@en[dl]] [[要素]]において、
同じ名前の [CODE(HTMLe)@en[dt]] [[要素]]が複数ある[SHOULD[べきではありません]]
[SRC[>>58]]。
;; [90] 「同じ」の意味は定義されていません。
[CODE(HTMLa)@en[textContent]] なのでしょうか。あるいは
[CODE(HTMLe)@en[img]] [[要素]]なども考慮する必要があるでしょうか。
構文上の制約というよりは[[意味][要素の意味]]に関する規定ということで、
人間が判断するべき事項であるため詳細な規則がないとも思われます。
[76]
1つの群の中の複数の値は、[RUBYB[代替]@en[alternative]]を表します。
1つの値を複数の[[段落]]で記述したい時は、
1つの [CODE(HTMLe)@en[dd]] [[要素]]の中に全[[段落]]を含めなければ[MUST[なりません]]。
[SRC[>>58]]
[EG[
[77] 例えば
[PRE(HTML code)[
<dl>
<dt>月
<dd>年を12に分割した期間。
<dd>地球の衛星。
</dl>
]PRE]
... は、「月」の2つの意味を説明しています。一方で、
[PRE(HTML code)[
<dl>
<dt>地球
<dd>
<p>太陽系第3惑星。
<p>衛星に月がある。
</dl>
]PRE]
... は、「地球」の1つの意味を説明しています。
]EG]
[78]
リスト内の群の順序や、
群内の名前の順序や値の順序は、
意味を持つかもしれません。 [SRC[>>58]]
[EG[
[79] 例えば[[アルゴリズム]]の説明で値による複数の分岐
([CODE[switch]]) を記述したい時、
「それ以外の場合」のような名前は、
群の順序が失われると意味不明になってしまいます。
]EG]
** 歴史
[7] HTML 4 仕様書は、 [CODE(HTMLe)[dl]] について、次のように説明しています。
> Definition lists, created using the [CODE(HTMLe)[DL]] element, generally consist of a series of term/definition pairs (although definition lists may have other applications).
> [CODE(HTMLe)[dl]] 要素を使って作成する定義並びは、
通常用語・定義の組の系列から成ります
(が、定義並びは他の応用も持つかもしれません)。
その上で、 >>8-9 のような、厳密にいえば定義とは言えないような例を挙げています。
[12]
> Another application of [CODE(HTMLe)[DL]], for example, is for marking up dialogues, with each [CODE(HTMLe)[DT]] naming a speaker, and each [CODE(HTMLe)[DD]] containing his or her words.
[SRC[HTML 4 10.3.1]]
と、会話 (対話) のマークにも使えるとされています。
[13]
このように、仕様は名前と値の組を持つリストへの幅広い応用を認めていますが、
要素型名の通り[Q[定義]]に限って使用するべきであると考える人もいます。
[19] 歴史を遡ると、 1993年1月に [ABBR[Tim] [Tim Berners‐Lee]]
は[Q[論理的・意味的なマーク付けは好きだけど、 HTML は広範囲の意味・データを扱うし、要素型名は覚えやすいようにつけてあるのだ]]
と言って [CODE(HTMLe)[[[dl]]]] も名前にこだわらず使うことができることを示しています。
<http://ksi.cpsc.ucalgary.ca/archives/WWW-TALK/www-talk-1993q1.messages/64.html>
[21]
HTML 4 DTD の[[注釈]] (参考)
には
[Q[definition lists - DT for term, DD for its definition]]
と説明があります。
([[名無しさん]] [sage])
[24]
>>19 それより前の1992年に既に HTML
の仕様書には用語集に限らず名前付きリスト一般に使ってよいことが明記されています (>>16)。
([[名無しさん]] [sage])
[26]
現在の慣行と現在の仕様書の見解と HTML に導入した人の見解が見事に一致してるのに、
なんで [[Strict]] 系原理主義者は[Q[''定義''リスト]]にこだわるのでしょうね?
([[名無しさん]] [WEAK[2005-11-14 13:58:48 +00:00]])
[27]
>>26 [Q[[[Strict]] 系原理主義者]]を [Q[[[Strict]] 系過激派]]に修正でよろしくw
[56]
その後の [[HTML5]] により、 [CODE(HTMLe)@en[dl]] が定義以外にも用いることができることは、
更に明確化されました。
[57]
[[HTML5]] 以後に書かれた解説の類の中には、
[[HTML4]] で定義リストだったのが [[HTML5]] でそれ以外にも使えるように変更された、
とするものが少なからずあります。
実際には、本章で示した通り、それまでも定義以外に用いることが認められていました。
そのような解説の類は、 [[HTML4]] やそれ以前の[[仕様書]]を参照せずに思いつきで適当なことを書いているか、
他の解説から[[コピペ]]しているのか、どちらにしても信用に値しません。
* 分類
[59] [CODE(HTMLe)@en[dl]] [[要素]]は、[[フロー内容]]です [SRC[>>58]]。
[60] [CODE(HTMLe)@en[dl]] [[要素]]は、
[F[子供]]に名前と値の群が含まれる場合、
[[触知可能内容]]です [SRC[>>58]]。
* タグ
[66] [[開始タグ]]も[[終了タグ]]も必須であり、省略できません [SRC[>>58]]。
* 属性
[5] [[大域属性]]を使うことができます [SRC[>>58]]。
[FIG(short list)[ [94] [CODE(HTMLe)@en[dl]] [[要素]]の[[廃止]]された[[属性]]
- [CODE(HTMLa)@en[compact]]
]FIG]
* 内容
[63] [CODE(HTMLe)@en[dl]] [[要素]]の[[内容]]は、
0個[[以上]]の名前と値の群です。 [SRC[>>58]]
[64] それとは別に、[[要素]]間に0個[[以上]]の[[スクリプト支援要素]]を含めることができます
[SRC[>>58]]。
[65] 名前と値の群は、
- 1つ[[以上]]の [CODE(HTMLe)@en[dt]] [[要素]]の後に、 1つ[[以上]]の
[CODE(HTMLe)@en[dd]] [[要素]]
- 1つの [CODE(HTMLe)@en[div]] [[要素]]
... のいずれかの方法で表します [SRC[>>58]]。 [CODE(HTMLe)@en[div]]
[[要素]]を使う場合、その[[子供]]が [CODE(HTMLe)@en[dt]] [[要素]]や
[CODE(HTMLe)@en[dd]] [[要素]]となります。
1つの [CODE(HTMLe)@en[dl]] [[要素]]では、
[CODE(HTMLe)@en[dt]] [[要素]]と [CODE(HTMLe)@en[dd]] [[要素]]を使う方法と、
[CODE(HTMLe)@en[div]] [[要素]]を使う方法との'''どちらか一方'''に統一しなければなりません
[SRC[>>58]]。
[FIG(railroad)[
=?
== |
=== +
==== [CODE(HTMLe)@en[div]]
=== +
==== +
===== [CODE(HTMLe)@en[dt]]
==== +
===== [CODE(HTMLe)@en[dd]]
]FIG]
** 歴史
*** HTML 2.0 の [CODE(HTMLe)@en[dl]] 内容モデル
[31]
1992年6月6日の [[Dan Connolly]] の [[DTD]] 案では、
[CODE(HTMLe)@en[[[dl]]]] の[[内容モデル]]は
'''[CODE(SGML)@en[([CODE(HTMLe)@en[[[dt]]]], [CODE(HTMLe)@en[[[dd]]]])+]]'''
と定義されていました。
[32]
1992年12月3日の [[Dan Connolly]] の [[DTD]] 案では、
[CODE(HTMLe)@en[[[dt]]]] と [CODE(HTMLe)@en[[[dd]]]]
[WEAK[(と [CODE(HTMLe)@en[[[li]]]])]] が[[強制空要素]]に変更され、
[CODE(HTMLe)@en[[[dl]]]] の[[内容モデル]]は
'''[CODE(SGML)@en[([CODE(HTMLe)@en[[[dt]]]] | [CODE(HTMLe)@en[[[dd]]]] | [CODE(HTMLe)@en[[[a]]]] | [CODE(HTMLe)@en[[[p]]]] | #[CODE(SGML)@en[[[PCDATA]]]])*]]'''
とされました。更に、[[注釈宣言]]として
[Q@en[Content should match ((DT,(A|#PCDATA)+)+,(DD,(A|#PCDATA)+)) But mixed content is messy.]]
とのメモがありました。
[43]
1993年1月14日に [[Dan Connolly]] は、
[CODE(HTMLe)@en[[[dl]]]] で [CODE(HTMLe)@en[[[p]]]]
を認めるべきかの問題に関し、1つの [CODE(HTMLe)@enn[[[dt]]]]
に対して [CODE(HTMLe)@en[[[dd]]]]
を複数書けるようにしたらよいのではと述べています。
;; [CITE[EMail Msg <9301142323.AA26924@pixel.convex.com>]]
<http://ksi.cpsc.ucalgary.ca/archives/WWW-TALK/www-talk-1993q1.messages/66.html>
[33]
>>32 の定義は [WEAK[(細かい表現は変わりながらも)]]
長く変更されずにいましたが、1994年4月9日の案では、
[CODE(HTMLe)@en[[[dt]]]] と [CODE(HTMLe)@en[[[dd]]]]
[WEAK[(と [CODE(HTMLe)@en[[[li]]]])]]
の[[終了タグ]]が復活し、
[CODE(HTMLe)@en[[[dl]]]] の[[内容モデル]]は
[CODE(SGML)@en[([CODE(HTMLe)@en[[[dt]]]]*, [CODE(HTMLe)@en[[[dd]]]]?)+]]
に変わりました。
;; この[[内容モデル]]は[[曖昧]] ([[非決定的]]) でまずい。
[44]
1994年6月の [[HTML]] 仕様案では、
- [CODE(HTMLe)@en[[[dt]]]] ''[[要素]]''や
[CODE(HTMLe)@en[[[dd]]]] ''[[要素]]''が[Q[用語]]や[Q[定義]]を先導すること、
- [CODE(HTMLe)@en[[[dt]]]] と [CODE(HTMLe)@en[[[dd]]]]
は組で使うこと、
- [CODE(HTMLe)@en[[[dd]]]] が後にこない [CODE(HTMLe)@en[[[dt]]]]
も認められる (その場合続く[Q[定義]]が[[空]]の [CODE(HTMLe)@en[[[dd]]]]
と等価)
こと、
が規定されていました。
;; [CITE[EMail Msg <9406101615.AA07825@ulua.hal.com>]]
<http://ksi.cpsc.ucalgary.ca/archives/HTML-WG/html-archive.messages/9.html>
より孫引き
[34] 1994年11月15日の [[HTML 2.0]] [[DTD]] 案では、
[CODE(SGML)@en[([CODE(HTMLe)@en[[[dl]]]] | [CODE(HTMLe)@en[[[dd]]]])+]]
という簡単な定義に変わりました。
[[HTML 2.0]] 最終版 ([[RFC 1866]])
は最終的にこの[[内容モデル]]を採用しています。
[49]
[[RFC 1866]] には
>Multiple <DT> may be paired with a
single <DD> element. Documents should not contain multiple
consecutive <DD> elements.
とあります。
*** HTML 3.0 の [CODE(HTMLe)@en[dl]] 内容モデル
[39] 1993年7月13日版 [[HTML+]] [[DTD]] 案では、
[CODE(HTMLe)@en[[[dl]]]] の[[内容モデル]]は、
[CODE(SGML)@en[([CODE(HTMLe)@en[[[dt]]]], [CODE(HTMLe)@en[[[dd]]]])+]]
とされていました。
[40] 1993年11月8日版 [[HTML+]] [[DTD]] 案では、
[CODE(HTMLe)@en[[[dl]]]] の[[内容モデル]]は、
[CODE(SGML)@en[([CODE(HTMLe)@en[[[dt]]]]'''+''', [CODE(HTMLe)@en[[[dd]]]])+]]
とされていました。
[41] 1994年1月5日版 [[HTML+]] [[DTD]] 案では、
[CODE(HTMLe)@en[[[dl]]]] の[[内容モデル]]は、
[CODE(SGML)@en[([CODE(HTMLe)@en[[[dt]]]]'''*''', [CODE(HTMLe)@en[[[dd]]]])+]]
とされていました。
;; この[[内容モデル]]は[[曖昧]] ([[非決定的]]) なのでよくない。
[42] 1994年4月5日版 [[HTML+]] [[DTD]] 案では、
[CODE(HTMLe)@en[[[dl]]]] の[[内容モデル]]は、
[CODE(SGML)@en[([CODE(HTMLe)@en[[[dt]]]]'''+''', [CODE(HTMLe)@en[[[dd]]]])+]]
に戻されています。
[35] 1995年3月1日版、24日版の [[HTML 3.0]] [[DTD]] 案では、
[CODE(HTMLe)@en[[[dl]]]] の[[内容モデル]]は
[CODE(SGML)@en[[CODE(HTMLe)@en[[[lh]]]]?, ([CODE(HTMLe)@en[[[dt]]]] | [CODE(HTMLe)@en[[[dd]]]])+)]]
で、 [Q@en[this is perhaps too lax?]] という[[注釈]]が付されていました。
*** HTML 3.2 の [CODE(HTMLe)@en[dl]] 内容モデル
[36] 1996年5月6日版の [[HTML 3.2]] [[DTD]] 案では、
[CODE(HTMLe)@en[[[dl]]]] の[[内容モデル]]は、
[[HTML 2.0]] (>>34) より更に緩められ、
[CODE(SGML)@en[([CODE(HTMLe)@en[[[dt]]]] | [CODE(HTMLe)@en[[[dd]]]])'''*''']]
とされています。
[37] しかし、1996年9月18日版の [[HTML 3.2]] [[DTD}]]]
案では、再度 [[HTML 2.0]] (>>34) と同じ
[CODE(SGML)@en[([CODE(HTMLe)@en[[[dt]]]] | [CODE(HTMLe)@en[[[dd]]]])'''+''']]
に戻されています。
結局 [[HTML 3.2]] [[勧告]]は [[HTML 2.0]] と同じ、
この[[内容モデル]]を採用しています。
*** HTML 4 の [CODE(HTMLe)@en[dl]] 内容モデル
[38] 1996年7月10日版に [[HTML 4.0]] [[DTD]]
案では、当時の [[HTML 3.2]] [[DTD]] 案同様、
[CODE(SGML)@en[([CODE(HTMLe)@en[[[dt]]]] | [CODE(HTMLe)@en[[[dd]]]])'''*''']]
が[[内容モデル]]とされていました。
9月3日版まではこの[[内容モデル]]ですが、
1997年7月8日版までには [[HTML 3.2]] [[勧告]]と同じ、
[CODE(SGML)@en[([CODE(HTMLe)@en[[[dt]]]] | [CODE(HTMLe)@en[[[dd]]]])'''+''']]
に変更されています。
結局 [[HTML 4]] [[勧告]]は[[厳密DTD]]も[[移行用DTD]]も、
[[HTML 2.0]] や [[HTML 3.2]] と同じ[[内容モデル]]
[CODE(SGML)@en[([CODE(HTMLe)@en[[[dt]]]] | [CODE(HTMLe)@en[[[dd]]]])'''+''']]
を採用しました。[[XHTML 1]] もこれを受け継いでいます。
* 文脈
[61]
[CODE(HTMLe)@en[dl]] [[要素]]は、[[フロー内容]]が期待される場所で使えます
[SRC[>>58]]。
* レンダリング
[11] HTML 4 仕様書は、レンダリングは UA 依存としています。
ただし、 >>10 のようなレンダリング例を挙げています。
多くの視覚的 UA は ([CODE(HTMLa)[[[compact]]]] 属性がなければ)
実際そのようにレンダリングします。
[CODE(HTMLa)[compact]] 属性に対応した UA は、
[CODE(HTMLe)[dt]] と [CODE(HTMLe)[dd]]
がそれぞれ別の行のこまとなる表のように表示するのが普通です。
([SAMP(CSS)[[[display]]: [[run-in]]]] と言った方が正確か。
もっとも、 HTML 4 は [CODE(HTMLa)[compact]] 属性の具体的効果にも言及してはいませんが、このように表現されるのが本来の [CODE(HTMLa)[compact]]
属性の意図です。)
[23]
[CITE[DLをTableに見せる]] <http://useyan.x0.com/s/html/css_sample/dl-table.html>
* [CODE(DOMi)@en[HTMLDListElement]] インターフェイス
[67] [CODE(HTMLe)@en[dl]] [[要素]]の[[要素インターフェイス]]は、
[CODE(DOMi)@en[HTMLDListElement]] [[インターフェイス]]です [SRC[>>58]]。
[68] [DFN[[CODE(DOMi)@en[HTMLDListElement]]]]
[[インターフェイス]]は、
[CODE(DOMi)@en[HTMLElement]] [[インターフェイス]]を[[継承]]しています
[SRC[>>58]]。
[69] [CODE(DOMi)@en[HTMLDListElement]] [[インターフェイス]]は、
[CODE(xattr IDL)@en[HTMLConstruct]] を持ちます [SRC[>>58]]。
[FIG(short list)[ [95] [CODE(DOMi)@en[HTMLDListElement]] [[インターフェイス]]の[[メンバー][インターフェイスメンバー]]
- [CODE(DOMa)@en[compact]]
]FIG]
* 歴史
** [CODE(HTMLe)@en[dl]] の誕生と意味
[15] [CODE(HTMLe)[dl]] 要素型に関する現時点で最古の記録は、
[[TimBL]] の記事 [CITE[Re: status. Re: X11 BROWSER for WWW]]
<http://ksi.cpsc.ucalgary.ca/archives/WWW-TALK/www-talk-1991.messages/3.html>
です。この記事によれば、遅くても1991年10月までには [CODE(HTMLe)[dl]]
(と [CODE(HTMLe)[dt]] と [CODE(HTMLe)[dd]]) が HTML
仕様に入ったことになります。
これ以前の記録が見つかっていないことから、どのような経緯で具体的にいつ
HTML 仕様に取り入れられたのかは不明ですが、 SGML で一般によく使われる要素型名ですから、
他の SGML 語彙を参考にしたことは間違いありません。
[16] >>15 の記事では [Q[glossary]] としか説明がありませんが、
HTML 仕様はより詳しく説明しています。完全に残っている最古の仕様書である
1992年1月の版 ([CITE[EMail Msg <9201091134.AA08666@ nxoc01.cern.ch >]]
<http://ksi.cpsc.ucalgary.ca/archives/WWW-TALK/www-talk-1992.messages/0.html>) では、
> A glosary (or definition list) is a list of paragraphs each of which has a
short title alongside it. Apart from glossaries, this format is useful for
presenting a set of named elements to the reader.
としています。このように、当初から、
単なる[Q[定義]]にとどまらない名前つきリストとして捉えられていたことがわかります。
[17] そのずっと後になりますが、 [[HTML+]] の議論文書
([CITE[Definition Lists]] <http://www.w3.org/MarkUp/HTMLPlus/htmlplus_34.html>)
は大変過激で、説明の大部分を[WEAK[わけのわからない]]会話例に費やしています。
(読んだ人は対話のマーク付けのための語彙と勘違いしてしまいそうです。)
[18] 一方で、 [[HTML 2.0]] (や [[HTML 3.0]]) は
> A definition list is a list of terms and corresponding definitions.
と、本来の語義に沿った説明をしています [SRC[RFC 1866 5.6.5.]]。
[[HTML 3.2]] は更に説明が簡単になって、直接的には
[Q[definition list]<http://www.w3.org/TR/REC-html32>] としか述べていません
(あとは [CODE(HTMLe)[dt]] と [CODE(HTMLe)[dd]] の説明)。
これが [[HTML 4]] になって、 >>7-12 のように (HTML 的な)
元の解釈に歩み寄ったというわけです。
[14]
仕様書:
- [[HTML 2.0]]
-- [[RFC 1866]] <urn:ietf:rfc:1866> [CITE[5.6.5. Definition List: DL, DT, DD]]
- [[HTML 3]]
-- HTML 3.0 I-D [CITE[Definition Lists]]
<http://www.w3.org/MarkUp/html3/deflists.html>
- [[HTML 3.2]]
-- [CITE[Block elements]] <http://www.w3.org/TR/REC-html32#block>
-- [CITE[Definition Lists]] <http://www.w3.org/TR/REC-html32#dl>
** HTML4
[62] [[HTML 4]] では、 [CODE[%list;]] が認められる場所で使えるとされていました。
[REFS[
- <IW:HTML4:"struct/lists.html#h-10.1">
- <IW:HTML4:"struct/lists.html#edef-DL">
- <IW:HTML4:"struct/lists.html#idx-list-5">
]REFS]
** 例
[10]
[PRE(HTML)[
<DL>
<DT>Dweeb
<DD>young excitable person who may mature
into a <EM>Nerd</EM> or <EM>Geek</EM>
<DT>Hacker
<DD>a clever programmer
<DT>Nerd
<DD>technically bright but socially inept person
</DL>
]PRE]
(HTML 4 仕様書から)
レンダリング例:
[PRE[
Dweeb
young excitable person who may mature into a Nerd or Geek
Hacker
a clever programmer
Nerd
technically bright but socially inept person
]PRE]
[8] 厳密には定義とは言えない例:
[PRE(HTML)[
<DL>
<DT><STRONG>Lower cost</STRONG>
<DD>The new version of this product costs significantly less than the
previous one!
<DT><STRONG>Easier to use</STRONG>
<DD>We've changed the product so that it's much easier to use!
<DT><STRONG>Safe for kids</STRONG>
<DD>You can leave your kids alone in a room with this product and
they won't get hurt (not a guarantee).
</DL>
]PRE]
(HTML 4 仕様書より)
[9] 他の並びと組合せた例:
[PRE(HTML)[
<dl>
<dt><strong>The ingredients:</strong></dt>
<dd>
<ul>
<li>100 g. flour</li>
<li>10 g. sugar</li>
<li>1 cup water</li>
<li>2 eggs</li>
<li>salt, pepper</li>
</ul>
</dd>
<dt><strong>The procedure:</strong></dt>
<dd>
<ol>
<li>Mix dry ingredients thoroughly.</li>
<li>Pour in wet ingredients.</li>
<li>Mix for 10 minutes.</li>
<li>Bake for one hour at 300 degrees.</li>
</ol>
</dd>
<dt><strong>Notes:</strong></dt>
<dd>The recipe may be improved by adding raisins.</dd>
</dl>
]PRE]
[20] 仕様書での用語定義の例
[PRE(HTML example)[
<[CODE(HTMLe)[dl]] [CODE(HTMLa)[class]]="termlist">
<[CODE(HTMLe)[dt]] [CODE(HTMLa)[id]]="term-XHTML">XHTML</[CODE(HTMLe)[dt]]>
<[CODE(HTMLe)[dd]]>The Extensible HyperText Markup Language.
XHTML is <[CODE(HTMLe)[em]]>not</[CODE(HTMLe)[em]]> the name of a single, monolithic markup language,
but the name of a family of document types which collectively form
this markup language. The namespace URI for XHTML is
<[CODE(HTMLe)[code]] [CODE(HTMLa)[class]]="URI">http://www.w3.org/1999/xhtml</[CODE(HTMLe)[code]]>.</[CODE(HTMLe)[dd]]>
<[CODE(HTMLe)[dd]] [CODE(HTMLa)[class]]="note"><[CODE(HTMLe)[strong]]>Note:</[CODE(HTMLe)[strong]]> Future version of XHTML might use
different namespace.</[CODE(HTMLe)[dd]]>
[INS[(略)]]
<[CODE(HTMLe)[dt]] [CODE(HTMLa)[id]]="term-XHTML_Integration_Set_document_type">XHTML Integration Set
document type</[CODE(HTMLe)[dt]]>
<dd>A document type which conforms to the
"XHTML Integration Set Document Type Conformance" as defined in
section 3.2 of [<[CODE(HTMLe)[a]] [CODE(HTMLa)[href]]="#ref-xhtml-m12n">XHTMLM12N</[CODE(HTMLe)[a]]>].</[CODE(HTMLe)[dd]]>
</[CODE(HTMLe)[dl]]>
]PRE]
出典: [CITE[XHTML Media Types]]
<http://www.w3.org/TR/2002/NOTE-xhtml-media-types-20020801/#terms>
[22] [CODE(HTMLe)[dt]] のない例
[PRE(HTML deprecated example code)[
<h2><a id="PER" name="PER">Proposed Edited Recommendations</a></h2>
<p>A Proposed Edited Recommendation is a technical report that W3C
has published for community review of important changes, some of which
may affect conformance. When there is consensus about the edits, the
document is published as a Recommendation.</p>
<dl>
<dd>There are currently no document at Proposed Edited Recommendation Status.</dd>
</dl>
]PRE]
出典: [CITE[W3C Technical Reports and Publications]]
<http://www.w3.org/TR/#PER> (2005年4月現在)
[25]
>>22 の頁では該当する状態の文書がある時はその名前を [CODE(HTMLe)@en[[[dt]]]],
著者名その他の情報を [CODE(HTMLe)@en[[[dd]]]] に入れており、
それとの整合性 (?) から該当する文書がないときに >>22 のようにマークしていると思われます。
([[名無しさん]] [sage])
[28]
'''同じ[CODE(HTMLe)@en[dt]]'''
1つの[CODE(HTMLe)@en[[[dl]]]]の中の複数の[CODE(HTMLe)@en[[[dt]]]]が等しいこともあり得ます。
[PRE(HTML example code)[
<dl>
<dt><dfn xml:lang="en">left</dfn></dt>
<dd>左</dd>
<dd>左翼・左派・革新派</dd>
<dt><dfn xml:lang="en">left</dfn></dt>
<dd><q xml:lang="en">leave</q>の過去形・過去分詞形</dd>
</dl>
]PRE]
**
[29]
[CITE[XHTML+CSS (r)evolution [42] ]] <http://www.cybergarden.net/revolution/20060706/#[42]>
- [1] ''Strict-HTML スレッド ver.9'' <http://pc2.2ch.net/test/read.cgi/hp/1039974316/643-> [CODE(HTML)[dl]] 要素の使い方って [[FAQ]] だよなぁ。
- [2] >>1 そういえば Strict HTML FAQs ってないのかなぁ。結構な量あるとおもうんだけどな
- [3] [CODE(HTML)[dl]] 要素は、特別の場合には [CODE(HTML)[[[table]]]] 要素と交換可能です。
- [4] ''www-html@w3.org from July 1997: Definition lists'' <http://lists.w3.org/Archives/Public/www-html/1997Jul/0451.html>: [[HTML 4]] 制定に当たって、 [CODE(HTML)[DL]] 要素の[[内容モデル]]に疑問を投げかけてみるテスト
[30]
[[GMLguide]] の [CODE(SGMLe)@en[[[dl]]]] は定義リストと説明されていて、別に
[CODE(SGMLe)@en[[[gl]]]] (用語リスト) があったりしたようです。
([[名無しさん]])
[45]
[CITE[html lecturte]] ([CODE[2003-10-18 17:55:15 +09:00]] 版) <http://www.padrac.ne.jp/~sugimoto/JIN/html/html.html#3-5-2>
1995年12月にかかれたものらしい。
> <dl>(defined list)
([[名無しさん]])
[46]
>>45 には
> <em>強調(emphasized)</em>
なんてのもでてきます。
([[名無しさん]])
[47]
>>45-46
それでいて
> <pre>プレフォーマット(preformat)</pre>
だから謎だ。
([[名無しさん]])
[48]
[CITE[我的春秋: 定義リストの違和感(続)]] ([CODE[2007-06-02 23:02:41 +09:00]] 版) <http://my-chunqiu.cocolog-nifty.com/blog/2007/05/post_82b8.html>
([[名無しさん]] [WEAK[2007-06-02 14:06:37 +00:00]])
[50] [CITE[IRC logs: freenode / #whatwg / 20090909]]
([TIME[2009-10-18 18:18:41 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20090909#l-341>
[51] [CITE[WWW-Talk Apr-Jun 1993: Description Lists]]
( ([TIME[2013-03-05 12:51:02 +09:00]] 版))
<http://1997.webhistory.org/www.lists/www-talk.1993q2/0208.html>
[52] [CITE[IRC logs: freenode / #whatwg / 20130817]]
( ([TIME[2013-08-18 18:51:22 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20130817>
[53] [CITE[ncsa-mosaic/CHANGES at master · alandipert/ncsa-mosaic]]
( ([TIME[2014-04-07 05:39:43 +09:00]] 版))
<https://github.com/alandipert/ncsa-mosaic/blob/master/CHANGES#L1025>
[54] [CITE@en[Web Applications 1.0 r8695 Catch up with recent changes that were made while the pipeline was down. Sorry for jamming all these changes into one patch.]]
( ([TIME[2014-08-02 01:30:00 +09:00]] 版))
<http://html5.org/r/8695>
[55] [CITE@en[Allow <div> around each <dt><dd> group in <dl> (#1945)]]
([[zcorpan]]著, [TIME[2016-10-31 17:25:43 +09:00]])
<https://github.com/whatwg/html/commit/5454d702e0262749aba55576dda32c48e0e498f0>