- From: Masayasu Ishikawa <mimasa@w3.org>
- Date: Wed, 03 Oct 2001 19:44:41 +0900 (JST)
- 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 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