W3C home > Mailing lists > Public > www-html-editor@w3.org > October to December 2001

Re: Error report : HTML 4.01 HEAD element content model

From: Masayasu Ishikawa <mimasa@w3.org>
Date: Wed, 03 Oct 2001 19:44:41 +0900 (JST)
Message-Id: <20011003.194441.78701822.mimasa@w3.org>
To: ---reiji---@pop14.odn.ne.jp
Cc: www-html-editor@w3.org
"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 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.

Masayasu Ishikawa / mimasa@w3.org
W3C - World Wide Web Consortium
Received on Wednesday, 3 October 2001 06:44:43 UTC

This archive was generated by hypermail 2.3.1 : Wednesday, 7 January 2015 15:08:32 UTC