- From: <paul@webotech.co.uk>
- Date: Fri, 04 Feb 2005 09:52:41 +0000
- To: www-validator@w3.org
David - that's great, thanks for the explanaition.
Paul
David Dorward writes:
> On Thu, Feb 03, 2005 at 07:01:15PM +0000, paul@webotech.co.uk wrote:
>>
>> If I validate this code:
>
>> <p>Your currency is set to
>> <script language="javascript" type="text/javascript">
>> <!--
>> document.write('<b>USD<\/b>');
>> //-->
>> </script>
>> <noscript><b>USD</b></noscript>
>> ..</p>
>
>
>> I get this error:
>> #Line 17, column 4: end tag for element "P" which is not open
>>
>> However, the code is HTML4.01 compliant if I remove
>> <noscript><b>USD</b></noscript>
>>
>> As far as I am aware I am allowed to embed <noscript> tags within <p> tags,
>
> You aren't. http://w3.org/TR/html4/sgml/dtd.html
>
> <!ENTITY % block
> "P | %heading; | %list; | %preformatted; | DL | DIV | NOSCRIPT |
> BLOCKQUOTE | FORM | HR | TABLE | FIELDSET | ADDRESS">
>
> i.e. "NOSCRIPT is part of that group of elements that are 'block'"
>
> <!ELEMENT P - O (%inline;)* -- paragraph -->
>
> i.e. "P elements may contain only elements in the group 'inline'"
>
> If you go through the document you will find that there is nothing
> that places the elements in the inline group in the block group.
>
> Therefore, since the end tag for <p> is optional, and <noscript> is
> not allowed there, starting a <noscript> inside a paragraph implies
> closing the paragraph at that point. Thus there is no longer a
> paragraph open when the parser reaches the </p>.
>
> --
> David Dorward http://dorward.me.uk
>
--
Paul Mackinlay (PhD, MEng)
Web Orientated Technologies http://www.webotech.co.uk/
New Media Marketing.SMS.Addressing Software.Development.Design
Tel: +44(0)7050 699971 Fax: +44(0)7050 699972 paul@webotech.co.uk
Received on Friday, 4 February 2005 09:52:42 UTC