E s s e n t i a l s

This page is for corrections to the book XHTML Essentials by Michael Sauers and R. Allen Wyke, published by John Wiley & Sons in September 2001.
ISBN 0-471-41764-5

Page xi
"Overview of the Book and Technology" should appear as a heading as like "How This Book is Organized" on page xii.
Page 7
The third-to-last line of HTML code should read </center>
Pages 61-62
Regarding the section on the XML Statement

The Catch

Unfortuntely everything I just explained in this section regarding the xml statement and the specifying of an encoding scheme, although technically correct in a pure XML environment, can cause significant problems with some of today's browsers.

The problem comes along with Internet Explorer and thier attempt to 'fix' previous implementation problems. With the release of IE6, problems were solved by the creation of two 'modes'; quirks mode and standard mode. Providing that you send the browser a proper DOCTYPE, it will go into standards mode. However, the DOCTYPE must come first. If anything appears before the DOCTYPE statement, including an xml statement, then the browser will shift into quirks mode. (In that mode, what you expect may not be what you get.) Therefore, unless you specifically want IE to use a non-standard implementation, you need to leave off the xml statement. Don't worry, your docuemnt will work and validate without an xml statement.

More information on this issue and a chart of how different browsers will react in the situtation can be found at http://www.hut.fi/u/hsivonen/doctype.html.
The next trouble is that it will not validate without an encoding scheme having been specified.

Well, there's a solution for that problem too. You can specify your encoding scheme in the docuemnt's metadata. To do this just add the following line of code to the head of your document:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

You can of course change the scheme as needed based upon the values listed in table 3.1.
Page 64
The note regarding the transitional DTD containing framset elements is wrong and should be ignored.
Page 71
In the third line of code the following should be deleted:
Page 77-78
In the code spanning from page 77 through page 78 there are two paragraphs. One says "Here is an example of MML (MathML)" and the other says "Here is an example of CML (ChemicalML)" these two lines should be swithced.
Page 83
There is an error in the third line of code. The middle should read "/TR/xhtml1/DTD/" not "TR/xhtml11/DTD/"
Page 84
Note update: HTML Tidy can now be found as a component of many HTML editors. One of which, my favorite, is HTML-Kit.
Page 91
The third bullet should be a single one, not a double one. This is a typographical error only and has no effect on the text.
Page 94
Some code from Wiley's typographical styling was left in and actual text dropped from line two after "Here is the...". The second line should read:
Page 111
The second bullet should read:
"If you use all three, to be processed correctly, they must follow this order: <thead>, <tfoot>, <tbody>..."
Page 126
The first bullet under type="password" should read:
"The information is not encrypted. From a security standpoint, using this attribute would only prevent..."
Page 148
Regarding FormMail. The FormMail script is highly insecure and should not be used under any circumstances. Instead you should use the updated version now knows a Yform.
Page 149
The second bullet should read:
"Do I want to prevent this information from being stored in the server logs? If, yes, go with post."
Page 175
The code example starting at the bottom of the page is using the Transitional DTD. It should be using the Frameset DTD.
Page 176
The src for the first frame shows "TOC.html" yet the sample code for that file is names "toc.html". Since filenames on most servers are case-sensitive, this will not work. One of them should be changed to match the other. My recommendation is to change the frame to read src="toc.html".
Pages 196-7
This isn't a correction. It's more of a clarification as supplied by Jonathon Isaac Swiderski:
Actually, the Recommendation defines the valid values for 'margin' thusly:
Value:   <margin-width> {1,4} | inherit
This means that 'margin:' may take between one and four values, inclusive.
If there is only one value, it applies to all sides.
Simple enough, right?
If there are two values, the top and bottom margins are set to the first value
and the right and left margins are set to the second.
IOW, a definition 'margin:0 0;' such as the original poster used means, 'make the vertical margins nil and the horizontal margins nil.' (Yes, it's really as redundant as it looks. A better example might be, 'margin: 0 20px;', which says 'make the vertical margins nil, but give 20px space on *both* the left and right sides'.)
If there are three values, the top is set to the first value, the left and }
right are set to the second, and the bottom is set to the third.
This one, for me at least, is the toughy. I can never remember which is which. The next one, actually, may be helpful:
If there are four values, they apply to the top, right, bottom, and left 
For those of you who know your compass or your clock, this is simply clockwise round the block. And for the three-value version, just remember that you're doing both sides at once, the first time round, so it's top, right/left, bottom. (Or you could remember it the way someone once tried to teach me the compass: remember NEWS (or Never Eat Shredded Wheat, which I think is a bit before my time): North (top), East/West (right/left), South (bottom).)

©2002, Michael Sauers
Last Updated:
Busted like heck in Netscape 4.x Valid XHTML 1.0!