- From: Chris Mannall <chris.mannall@hecubagames.com>
- Date: Thu, 22 Aug 2002 10:17:46 +0100
- To: www-html@w3.org
Lorenzo De Tomasi wrote:
> My proposal is:
>
> If I write this code
>
> <html>
> <head>
> </head>
> <body>
> <title>Lorenzo De Tomasi</title>
> </body>
> </html>
>
> every browser write "Lorenzo De Tomasi" as the title of the window
and > as text in the body. The advantage is that I must write it only one
> time.
This also has a number of disadvantages, however.
Firstly, as other people have mentioned, more often than not the title
and the page heading will have different content, since the title must
make sense out-of-context whereas the page heading is by definition
always in the context of the page.
Secondly, it's fair to say that if you look at the web as a whole, the
h1 element is far from always a direct child of the body element. For
whatever reason, it's often a child of a div or (bleagh) table element.
This causes problems in terms of validation; if you have to allow the
potential use of the title element as a child of many different
elements, there's no way to enforce that you can only have one title
element in the document.
Next, there's the fact that the title element would have to be given a
content model beyond plain text. I see a lot of pages with headings in a
form like <h1><span>Important Word</span> minor word <span>Important
Word</span></h1>, for reasons of styling... in order to allow this, the
title element would have to be given a content model that allowed child
elements.
Frankly, by this stage this is already beginning to sound pretty messy.
The use cases are pretty narrow (since the majority of documents have
differing titles and headings), and provide very few benefits (modern
bandwidth makes saving twenty/thirty bytes pretty inconsequential, and
keeping the title and heading in sync is hardly difficult).
For what it's worth, it would be fairly easy to achieve this with CSS if
you could convince the CSS working group of its practical use. For
example, CSS already defines the :before pseudo-element and the content
property, which could potentially be used in this manner:
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title id="documentTitle">the title of my document</title>
<style type="text/css">/*<![CDATA[*/
body:before { content:#documentTitle; }
/*]]>*/</style>
</head>
<body>
<p>My text</p>
</body>
</html>
This could cause the document title to be displayed in the page itself,
before the content of the body element. Again, note that even in CSS3
this is not defined as a possible use of the content property; it can
take a number of value types, including strings and external URIs, but
it does not at present allow fragment identifiers such as used in the
above example.
See the CSS2 Generated Content section[1] for a full description of the
:before pseudo-element and the content property. To my knowledge, there
is currently not a CSS3 working draft covering this aspect of CSS.
Again, I still believe the use cases are very narrow.
- Chris Mannall
[1] http://www.w3.org/TR/CSS2/generate.html
Received on Thursday, 22 August 2002 05:30:05 UTC