HTML 3.2: Bug in OL, LI attribute definition lists

Joe English (
Thu, 16 May 1996 15:01:49 PDT

Message-Id: <>
Subject: HTML 3.2: Bug in OL, LI attribute definition lists
Date: Thu, 16 May 1996 15:01:49 PDT
From: Joe English <>

Regarding the HTML 3.2 DTD, revision 1.1, stamped:

    $Id: HTML3.2.dtd,v 1.1 1996/05/06 22:11:23 connolly Exp $

1. The attribute definition for the TYPE attribute on the OL
element is specified as:

    <!ENTITY % OLStyle "CDATA" -- "1|a|A|i|I" but SGML folds case -->

    <!ATTLIST OL -- ordered lists --
        type     (%OLStyle)  #IMPLIED   -- numbering style --

Replacing entities, this expands to:

        type     (CDATA)  #IMPLIED

This means that the only allowable value for the TYPE attribute
is the token "CDATA".  That is,


is legal but

	<OL TYPE="i">

is not, contrary to the description of this attribute.

Suggested fix:

    <!ENTITY % OLStyle "CDATA" -- constraint: [1|a|A|i|I] -->

	type	%OLStyle;	#IMPLIED

(That is, there should be no parentheses around the declared value.)

2. The declared value of the TYPE attribute on the LI element
is specified as:

    <!ENTITY % ULStyle "disc|square|circle">
    <!ENTITY % LIStyle "%ULStyle|%OLStyle">
	    type   (%LIStyle)    #IMPLIED   -- list item style --

which expands to:

	    type   (disc|square|circle|CDATA)    #IMPLIED

This is almost certainly not what was intended.

[ The apparent intent seems to be to allow authors to specify
  a bullet style _or_ a numbering style for individual list items.
  The informal part of the DTD only mentions changing bullet styles,
  though, and there is little utility in changing the numbering style
  mid-list, so perhaps not. ]

Suggested fix:

	<!ENTITY % ULStyle "(disc|square|circle)">
	    type	%ULStyle;	#IMPLIED
	<!ENTITY % LIStyle "%ULStyle"  -- constraint: only valid in <UL> -- >
	    type	%LIStyle;	#IMPLIED

This would only allow specifying a different bullet style,
not a different numbering style.  If that was in fact intended,
then a suggested fix is:

		-- constraint: (ULStyle | OLStyle)
		   Case-insensitive if ULStyle, case-sensitive otherwise.


--Joe English