Re: Proper HTML Tag Placement

Earl Hood (ehood@imagine.convex.com)
Wed, 17 Aug 1994 11:22:37 -0500


Date: Wed, 17 Aug 1994 11:22:37 -0500
From: ehood@imagine.convex.com (Earl Hood)
Message-Id: <199408171622.LAA05516@imagine.convex.com>
Subject: Re: Proper HTML Tag Placement

In article <CunMn4.65K@unixhub.SLAC.Stanford.EDU>,
Mike Kelsey <kelsey@avocet.SLAC.Stanford.EDU> wrote:

>|> >   <a href="..."><h1>...</h1></a>
>|> >or
>|> >   <h1><a href="...">...</a></h1>
>|> 
>|> >Why is one method preferable to the other?

><http://www.ncsa.uiuc.edu/General/Internet/WWW/HTMLPrimer.html#A1.8.2>.
>I quote this section in full, since this is where I got the information
>for my original post:

>Embed Anchors and Character Tags, But Nothing Else
>
>It is acceptable to embed anchors within another HTML element: 
>
>    <H1><A HREF = "Destination.html">My heading</A></H1>
>
>Do not embed a heading or another HTML element within an anchor: 
>
>    <A HREF = "Destination.html">
>    <H1>My heading</H1>
>    </A>
>
>Although most browsers currently handle this example, it is forbidden
>by the official HTML and HTML+ specifications, and will not work with
>future browsers.

According to the HTML 2.0 DTD, the second item is legal, but the DTD is
setup that the second item will could become illegal in future
versions.  I believe it is currently set up to be more backward
compatible than enforcing the newer style.  If documents are already
discouraging old style, then the DTD should do the same by enforcing
the "correct" style.

My minor grievance about the possible future usability of the anchor
element is that STRONG and EM elements will not be allowed in an
anchor.  For example:

	<H2><A NAME="foo">The <CODE>FOO</CODE> command</A></H2>

seems fine for me on a stylistic point of view, but will be illegal.
The future content model of the anchor is supposed to be the
following:

	(#PCDATA | IMG | BR)+  -(A)


I figure if you are going to allow #PCDATA as part of the content
of an anchor, then the character based style elements should also
be allowed.

On a related not, all character based elements should exclude
themselves in their content model.  For example:

	<!ELEMENT EM - - (%whatever-content;) -(EM)>


	--ewh