Re: a new value for <title> and other meta tags

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