- From: Jukka K. Korpela <jkorpela@cs.tut.fi>
- Date: Thu, 20 Jan 2005 08:54:53 +0200 (EET)
- To: "David R. Stong" <drs18@psu.edu>
- Cc: www-validator@w3.org
On Wed, 19 Jan 2005, David R. Stong wrote: > - - <label> elements will not > validate. The Markup Validator says <label> is not allowed in that > position. If I nest the form's contents inside a <p></p> tag, then > place the <form<</form> around the <p></p>, the page validates. In Strict versions of DTDs, inline markup (or plain text) is not allowed directly inside a <form> element; everything needs to be wrapped inside a block level container. It need not be specifically <p>; it could be <div>, or <fieldset>, for example, or you could have <table> inside a <form>. Actually using <p> is often not logical, since a <label> and an <input> don't really form a _paragraph_; moreover, <p> markup implies typically some default margins, which might be undesired. > I can't find anything in the DTD or XHTML standard that explains > this. In the XHTML 1.0 Strict DTD there is: <!ELEMENT form %form.content;> <!ENTITY % form.content "(%block; | %misc;)*"> <!ENTITY % block "p | %heading; | div | %lists; | %blocktext; | fieldset | table"> <!ENTITY % misc "noscript | %misc.inline;"> <!ENTITY % misc.inline "ins | del | script"> The Transitional DTD is more permissive as regards to form content: <!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*"> The principle of allowing only block level elements directly inside a <form>, as well as directly inside a <body>, is not explicitly explained in HTML specifications, even in the good old HTML 2.0 specification (which also had Strict versions of DTDs and was a great improvement over its successors in clarity). It is logically independent of the principle of disallowing (most) presentational elements and attributes, which is what Strict is best known for. -- Jukka "Yucca" Korpela, http://www.cs.tut.fi/~jkorpela/
Received on Thursday, 20 January 2005 06:55:26 UTC