Often people have trouble learning and understanding HTML because they don't have a concept of beauty and clean semantics. Spoiled by WYSIWYG “editors” (sic) and other newfangled nonsense I guess.
I recommend HTML Tidy.
If you use XHTML you also need to be aware of the issues regarding MIME types. On
m.mongers.org I serve all XHTML pages as
application/xhtml+xml for browsers that support it, and for the browsers that don't, I serve it as
text/html, which is wrong, but tolerable.
As usual it's Internet Explorer being way behind the curve here, even IE 7 doesn't get it right in spite of all the soothing standards compliance sounds they've been making about it in Redmond.
I fix it by hardlinking all
.html files to a corresponding
.xhtml file—using just a single extra inode per file—and using Apache content negotiation to serve whatever the client claim to understand and prefer.
It's a very lightweight way to do it, but there are plenty other ways, some discussed in the article linked above.