- 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