* 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[定義]]に限って使用するべきであると考える人もいます。 [19] 歴史を遡ると、 1993年1月に [ABBR[Tim] [Tim Berners‐Lee]] は[Q[論理的・意味的なマーク付けは好きだけど、 HTML は広範囲の意味・データを扱うし、要素型名は覚えやすいようにつけてあるのだ]] と言って [CODE(HTMLe)[[[dl]]]] も名前にこだわらず使うことができることを示しています。 [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 ([[名無しさん]] [sage]) [[#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]] 属性の意図です。) [23] [CITE[DLをTableに見せる]] ([[名無しさん]]) [[#comment]] ** 歴史 *** [CODE(HTMLe)@en[dl]] の誕生と意味 [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]] *** [CODE(HTMLe)@en[dl]] の内容モデル **** 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>]] [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>]] より孫引き [34] 1994年11月15日の [[HTML 2.0]] [[DTD]] 案では、 [CODE(SGML)@en[([CODE(HTMLe)@en[[[dl]]]] | [CODE(HTMLe)@en[[[dd]]]])+]] という簡単な定義に変わりました。 [[HTML 2.0]] 最終版 ([[RFC 1866]]) は最終的にこの[[内容モデル]]を採用しています。 [[#comment]] **** 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?]] という[[注釈]]が付されていました。 [[#comment]] **** 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]] と同じ、 この[[内容モデル]]を採用しています。 [[#comment]] **** 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]] もこれを受け継いでいます。 [[#comment]] **** メモ [[#comment]] *** メモ [[#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:
  1. Mix dry ingredients thoroughly.
  2. Pour in wet ingredients.
  3. Mix for 10 minutes.
  4. Bake for one hour at 300 degrees.
Notes:
The recipe may be improved by adding raisins.
]PRE] [20] 仕様書での用語定義の例 [PRE(HTML example)[ <[CODE(HTMLe)[dl]] [CODE(HTMLa)[class]]="termlist"> <[CODE(HTMLe)[dt]] [CODE(HTMLa)[id]]="term-XHTML">XHTML <[CODE(HTMLe)[dd]]>The Extensible HyperText Markup Language. XHTML is <[CODE(HTMLe)[em]]>not 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)[dd]] [CODE(HTMLa)[class]]="note"><[CODE(HTMLe)[strong]]>Note: Future version of XHTML might use different namespace. [INS[(略)]] <[CODE(HTMLe)[dt]] [CODE(HTMLa)[id]]="term-XHTML_Integration_Set_document_type">XHTML Integration Set document type
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]. ]PRE] 出典: [CITE[XHTML Media Types]] [22] [CODE(HTMLe)[dt]] のない例 [PRE(HTML deprecated example code)[

Proposed Edited Recommendations

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.

There are currently no document at Proposed Edited Recommendation Status.
]PRE] 出典: [CITE[W3C Technical Reports and Publications]] (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)[
left
左翼・左派・革新派
left
leaveの過去形・過去分詞形
]PRE] ([[名無しさん]] [sage]) [29] [CITE[XHTML+CSS (r)evolution [42] ]] ([[名無しさん]]) [[#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]] 要素の[[内容モデル]]に疑問を投げかけてみるテスト [30] [[GMLguide]] の [CODE(SGMLe)@en[[[dl]]]] は定義リストと説明されていて、別に [CODE(SGMLe)@en[[[gl]]]] (用語リスト) があったりしたようです。 ([[名無しさん]]) [[#comment]] * メモ