Re: Error report : HTML 4.01 HEAD element content model

"Flat" <---reiji---@pop14.odn.ne.jp> wrote:

> Dear editor, this is a error report about  content model of HEAD element
> declaration in HTML 4.01 Specification.
> 
> In HTML 4.01 Strict DTD, the HEAD element is declared as follows:
> 
>     <!ELEMENT HEAD O O (%head.content;) +(%head.misc;) -- document head -->
> 
> I think that this declaration is treated as follows:
> 
>     <!ELEMENT HEAD O O (%head.misc;)*, ( (%head.content;), (%head.misc)* ) >
> 
> But, if this is true, %head.misc; elements can not occur between
> %head.content; elements.
> For example, META element can not occur between TITLE and BASE elements,
> because %head.content; is defined as "TITLE & BASE?".

No, as section 11.2.5 of ISO 8879:1986 says, exceptions (inclusions /
exclusions) take effect everywhere in the content model.  That is,
the inclusion group indicates %head.misc; elements may appear
everywhere in %head.content;.

You might be confused by the explanation in section 11.2.5.1 of ISO
8879:1986, saying that "Qx" be treated as:

  (R1 | R2 | ... | Rn)*, (Q, (R1 | R2 | ... | Rn)*)x

But in this case, it should be interpreted to mean something like this
(note: the following content model is ambiguous, this is only to
illustrate how inclusions are to be expanded):

    <!ELEMENT HEAD O O (((%head.misc;)*, (TITLE, (%head.misc;)*)) &
                        ((%head.misc;)*, (BASE, (%head.misc;)*)?)) >

So this is not an error in the DTD.

Regards,
-- 
Masayasu Ishikawa / mimasa@w3.org
W3C - World Wide Web Consortium

Received on Wednesday, 3 October 2001 06:44:43 UTC