Re: attributes with missing values yield different errors?

On Thu, 4 Apr 2002, Jim Correia wrote:

> Assuming a full HTML 4.01 document a table element is written as so
>
> <table border>
>
> The validator doesn't complain.
>
> The attributes for table are declared as
>
> <!ATTLIST TABLE                        -- table element --
>    %attrs;                              -- %coreattrs, %i18n, %events --
>    summary     %Text;         #IMPLIED  -- purpose/structure for speech
> output--
>    width       %Length;       #IMPLIED  -- table width --
>    border      %Pixels;       #IMPLIED  -- controls frame width around
> table --
>    frame       %TFrame;       #IMPLIED  -- which parts of frame to
> render --
>    rules       %TRules;       #IMPLIED  -- rulings between rows and
> cols --
>    cellspacing %Length;       #IMPLIED  -- spacing between cells --
>    cellpadding %Length;       #IMPLIED  -- spacing within cells --
>    align       %TAlign;       #IMPLIED  -- table position relative to
> window --
>    bgcolor     %Color;        #IMPLIED  -- background color for cells --
>    %reserved;                           -- reserved for possible future
> use --
>    datapagesize CDATA         #IMPLIED  -- reserved for possible future
> use --
>    >
>
> This seems reasonable, since HTML supports attribute minimization, so
> this should be expanded to <table border=border> conceptually, and since
> %pixels is ultimately defined as CDATA, the validator lets it by. Is
> this the correct analysis?

No.  <table border> is actually equivalent to <table frame=border>.  Note
this comment from the HTML 4.01 DTD in describing the values for the
"frame" attribute:

 The value "border" is included for backwards compatibility with
 <TABLE BORDER> which yields frame=border and border=implied
 For <TABLE BORDER=1> you get border=1 and frame=implied. In this
 case, it is appropriate to treat this as frame=border for backwards
 compatibility with deployed browsers.

-- 
Liam Quinn

Received on Thursday, 4 April 2002 16:12:30 UTC