Transitional, Obsolete, and Proprietary HTML

Throughout this book, I've talked about HTML 4.01 Strict. 4.01 suggests, of course, that there have been previous versions of HTML (there have), but Strict suggests that there is more than one version of HTML 4.01. There are three in total: Strict, Transitional, and Frameset, and all of them exist in XHTML 1.0 as well. Frameset (X)HTML gets its own chapter. There are also other elements that were included in previous versions of HTML but not in the latest, and elements that were never part of any HTML specification.

Transitional (X)HTML

Transitional (X)HTML contains several attributes and elements that are deprecated, which means they're being phased out. These elements and attributes are hangovers from a time when presentational elements were all we had to make our pages look nice. By the way, the word hangover is a perfect word to describe Transitional (X)HTML; presentational markup is not only passé, it's also a headache.

The Transitional Doctypes
HTML 4.01
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
XHTML 1.0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Transitional Elements

So what manner of presentational elements does Transitional HTML elements contain?

applet
This was for Java applets, which are now embedded using the object elememt.
basefont
This element controlled the default size, color, and typeface of a webpage's font. It has been completely replaced by the font family of CSS properties with the sole exception of its color attribute, which has been replaced by the CSS property color.
center
This element caused the text within it to be centered. It has since been replaced with text-align:center.
dir
This element was meant to create a multi-column directory, but was never rendered as anything different than a normal ul element.
isindex
This was a single-line text prompt, no different from a text-type input element.
font
This element controlled the size, color, and typeface of a font. It has been completely replaced by the font family of CSS properties with the sole exception of its color attribute, which has been replaced by the CSS property color.
menu
This was intended for navigation lists, but has been completely replaced by the ul element.
s
strike
These elements caused a line to be drawn through the text. They are replaced by text-decoration:line-through and the del element.
u
This was the underline element, which was removed since underlined text usually means a hyperlink or inserted text. It is replaced by text-decoration:underline, hyperlinks, and the ins element.

Transitional Attributes

There are several attributes that were phased out as well. I won't mention attributes used only for transitional elements, but there are several that were used with elements that are also included in HTML 4.01 Strict.

It is worth noting that some of these haven't been entirely replaced.

align
This has been overridden by the CSS property text-align in most cases. In the case of a caption element, the CSS property caption-side can place the caption above or below a table, but takes some extra CSS coding to place it at the left or right of the table.
alink
link
vlink
These were associated with body elements, and set the color of hyperlinks, active hyperlinks, and visited hyperlinks. These have been replaced by the color property and the :active, :link and :visited pseudoclasses.
background
This set the background image for the body element, and could only tile the images. This has been replaced by the CSS property background-image.
bgcolor
This set the background color of an element. This has been replaced by the CSS property background-color.
border
This set the border width around img and object elements. This has been replaced by the CSS border-width properties.
clear
This was used with br elements when images or objects were floated, and had exactly the same element as the CSS property that replaces it: clear.
compact
This was used with ul and ol elements, reducing the spacing between the li elements. This has been replaced by the CSS properties margin and height.
hspace
vspace
These were used with img and object elements, giving them space on the sides (hspace) and top and bottom (vspace). These have been replaced by the CSS property margin.
language
This was used to determine the programming language of a script. It has been replaced with the attribute type.
noshade
This was used to help style an hr element. This has been replaced by the CSS property border, since hr elements are usually given a grooved border.
nowrap
This was used to suppress word wrapping. This has been replaced by the CSS property whitespace and the value pre.
size
This was used with the hr element to determine its height.
start
This was used to decide with which number an ordered list would start. It has sort of been replaced with CSS counters. Incidently, I used this attribute to figure out how Lynx would behave when its maximum list number was exceeded, as explained in CSS For Lists.
text
This was used with the body element to set the default font color. This has been replaced by the CSS property color.
type
This was used to set the list type for item lists. CSS property list-style-type.
value
This was used with an li element to reset the numbering in an ordered list. It has not been replaced.
width
This was used with several elements such as hr to set their width. CSS property width.

Obsolete HTML

Obsolete elements are elements included in previous HTML specifications, but were later dropped. One of these had rather dangerous results.

comment
This created a comment, which now is done by placing your comment between <!-- and -->.
listing
This allowed a list to be created by preserving the whitespace. Its function is exactly the same as the pre element.
plaintext
This is probably the most dangerous element of all; it turns everything after it into plain text. When I say everything, I mean all tags, all character references, all everything—and yes, that includes its own end tag, which means there is no way to stop its effect. I first encountered this anarchic little beast when someone used it on a forum which allowed HTML markup in its posts. What you can imagine... happened.
xmp
This worked a bit like the plaintext element, except it did recognize its own end tag, much like the title and textarea elements.

Proprietary HTML

Proprietary elements are the biggest mess left behind by the browser wars between Internet Explorer and Netscape. They were never part of any specification, and should never be used. I'll mention the two most common and iconic (and possibly most annoying) ones.

blink
This caused text to blink. Surprisingly, it has been replaced by the CSS declaration text-decoration:blink;. This was introduced by Netscape.
marquee
This caused text to scroll from one side of the screen to the other. This was introduced by Internet Explorer.