Re: dl, dd, dt in XHTML 2.0

Marcos Caceres wrote:

> Dear all, 
> 
> This has probably already been proposed a number of times, but I'm just
> wondering if it wouldn't make more 'semantic' sense to encapsulate dd
> elements inside the dt element in xhtml 2.0. 
> 
> For instance, 
> 
> 
> <dl>
> 
>   <dt>My term
> 
>             <dd>This is the first definition</dd>
> 
> <dd>This is the second definition</dd>
> 
>  </dt>
> 
> </dl>
> 
>  
> 
> At the moment, it would seem that the semantic relationship between the dt
> and the dd(s) elements is only implicit as it is positional (and only
> perhaps visually semantic when rendered), rather than explicit through
> encapsulation. Less importantly, encapsulation dd inside dt would also
> follows the structure for coding every other type of the list module in
> xhtml 2.0.. aside from nesting of list terms and definition elements. which
> might be something else to consider all together for definition lists.
> 

In HTML 2.0, altho the DTD allowed for any mixture of dt and dd 
elements inside a dl, the eording of the standard  said that while 
multiple consecuctive dt's were allowed, consecutive dd's should be 
avoided.

(I don't know why the standard instead of specifiying:
 <!ELEMENT DL - -  (DT | DD)+>
didn't use:
 <!ELEMENT DL - -  (DT+, DD)+>
given the wording of the text.)

By the HTML 3.2 standard, the statement that consecutive dd's should be 
avoided was gone. I can see the case for multiple dt's as well as 
multiple dl's, in certain circumstances. Hence, trying to put dd inside 
dt or dt inside dd does not strike me as a good solution to this 
problem.

> When I think about it some more, doing this kind of nesting may also require
> the renaming of the dl, dd, dt, or even adding some sort of container that
> wraps around a definition.. Something different like this:
> 
>  
> 
> <dl>
> 
>     <definition>
> 
> <dt>My term</dt>
> 
>             <dd>This is the a definition</dd>
> 
> <dd>This is the another definition</dd>
> 
>       </definition>
> 
> </dl>

As you said, this has been proposed before. I used <di> (definition 
item) when I proposed this, altho my proposal made it optional.

<!ELEMENT dl (dd | di | dt)+>
<!ELEMENT di (dt+, dd+)>
<!ELEMENT dt (#PCDATA | %Inline;)*>
<!ELEMENT dd (#PCDATA | %Flow;)*>

Received on Tuesday, 20 May 2003 04:57:20 UTC