* dl 要素型 (HTML, XHTML 1)
[6] [DFN[[CODE(HTMLe)[dl]] 要素型]]の [Q[dl]]
は、 [Q[definition list]] (定義並び) の略です。
[CODE(HTMLe)[dl]] は、用語 ([CODE(HTMLe)[[[dt]]]])
と説明 ([CODE(HTMLe)[[[dd]]]]) で構成します。
[14]
仕様書:
- [[HTML 2.0]]
-- [[RFC 1866]] [CITE[5.6.5. Definition List: DL, DT, DD]]
- [[HTML 3]]
-- HTML 3.0 I-D [CITE[Definition Lists]]
- [[HTML 3.2]]
-- [CITE[Block elements]]
-- [CITE[Definition Lists]]
- [[HTML 4]]
--
--
--
[5]
:[[開始タグ]]:必須
:[[終了タグ]]:必須
:[[内容模型]]:[CODE(SGML)[([CODE(HTMLe)[[[dt]]]] | [CODE(HTMLe)[[[dd]]]])+]]
:出現できる文脈:[CODE(SGML)[%[[list]]]] な文脈
:[[属性]]:
,[CODE(HTMLa)[[[class]]]] , , ,[[級]] ,[HTML4] %[[coreattr]]
,[CODE(HTMLa)[[[compact]]]] ,([[真偽値属性]]) ,([[偽]]) ,コンパクト表示 ,[HTML4] 非推奨
,[CODE(HTMLa)[[[dir]]]] , , ,[[書字方向]] ,[HTML4] %[[i18n]]
,[CODE(HTMLa)[[[id]]]] , , ,一意識別子 ,[HTML4] %coreattr
,[CODE(HTMLa)[[[lang]]]] , , ,[[自然言語]] ,[HTML4] %i18n
,[CODE(HTMLa)[[[xml]]:lang]] , , ,自然言語 ,[XHTML1]
,[CODE(HTMLa)[[[onclick]]]] , , , ,[HTML4] %[[events]]
,[CODE(HTMLa)[[[ondblclick]]]] , , , ,[HTML4] %events
,[CODE(HTMLa)[[[onkeydown]]]] , , , ,[HTML4] %events
,[CODE(HTMLa)[[[onkeypress]]]] , , , ,[HTML4] %events
,[CODE(HTMLa)[[[onkeyup]]]] , , , ,[HTML4] %events
,[CODE(HTMLa)[[[onmousedown]]]] , , , ,[HTML4] %events
,[CODE(HTMLa)[[[onmousemove]]]] , , , ,[HTML4] %events
,[CODE(HTMLa)[[[onmouseout]]]] , , , ,[HTML4] %events
,[CODE(HTMLa)[[[onmouseover]]]] , , , ,[HTML4] %events
,[CODE(HTMLa)[[[onmouseup]]]] , , , ,[HTML4] %events
,[CODE(HTMLa)[[[style]]]] , , ,スタイル情報 ,[HTML4] %coreattr
,[CODE(HTMLa)[[[title]]]] , , ,注釈的題 ,[HTML4] %coreattr
[[#comment]]
** dl によりマークされるもの
[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[定義]]に限って使用するべきであると考える人もいます。
[[#comment]]
** レンダリング
[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]]
属性の意図です。)
[[#comment]]
** 歴史
[15] [CODE(HTMLe)[dl]] 要素型に関する現時点で最古の記録は、
[[TimBL]] の記事 [CITE[Re: status. Re: X11 BROWSER for WWW]]
です。この記事によれば、遅くても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 >]]
) では、
> 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]] )
は大変過激で、説明の大部分を[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]] としか述べていません
(あとは [CODE(HTMLe)[dt]] と [CODE(HTMLe)[dd]] の説明)。
これが [[HTML 4]] になって、 >>7-12 のように (HTML 的な)
元の解釈に歩み寄ったというわけです。
[[#comment]]
** 使用例
[10]
[PRE(HTML)[
- Dweeb
- young excitable person who may mature
into a Nerd or Geek
- Hacker
- a clever programmer
- Nerd
- technically bright but socially inept person
]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)[
- Lower cost
- The new version of this product costs significantly less than the
previous one!
- Easier to use
- We've changed the product so that it's much easier to use!
- Safe for kids
- You can leave your kids alone in a room with this product and
they won't get hurt (not a guarantee).
]PRE]
(HTML 4 仕様書より)
[9] 他の並びと組合せた例:
[PRE(HTML)[
- The ingredients:
-
- 100 g. flour
- 10 g. sugar
- 1 cup water
- 2 eggs
- salt, pepper
- The procedure:
-
- Mix dry ingredients thoroughly.
- Pour in wet ingredients.
- Mix for 10 minutes.
- Bake for one hour at 300 degrees.
- Notes:
- The recipe may be improved by adding raisins.
]PRE]
[[#comment]]
** メモ
- [1] ''Strict-HTML スレッド ver.9'' [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'' : [[HTML 4]] 制定に当たって、 [CODE(HTML)[DL]] 要素の[[内容モデル]]に疑問を投げかけてみるテスト
[[#comment]]
* メモ