Authoring Web Pages that Work
While Mosaic or Netscape was dominant, you could either stubbornly author your documents in accordance to the specification, or just adopt Netscape's extensions and have the most spankingly new pages without being sure everyone could actually read them. Usually, there was a middle ground between these two extremes that could ensure that your documents were both featured and accessible.
But now, you have a specification on one side and two popular implementations, neither of which agrees with the specification, while they don't even agree with each other.
In the mean time, the W3C (of which both Netscape and Microsoft are paying members) was developing its own advancements in HTML. Most of these, included in works such as HTML+ and HTML 3.0, were scrapped and never used in light of the advancements of Navigator and Explorer. Instead, the W3C published HTML 3.2, which tried to reflect the current state of HTML as presented in Navigator and Explorer at the time. More recently, the W3C published HTML 4.0, the latest HTML specification that features many advancements and covers most of the needs of today's Web authors.
So let's see where we, the authors of HTML documents, stand. We have a specification that allows us to do all the things we want to do, and this is great. However, a great percentage of our potential audience will be reading our documents using a browser that does not support most of the stuff in the specification, while it supports a whole host of other stuff not in the specification. And as if that wasn't enough, we have another browser, used by another great percentage of our audience, that understands different bits and introduces even more different bits.
The easy thing for me to do would be to teach you HTML 4.0. This would be great, but then you'd all come back whining because your documents don't work right with your browser. Another way is to teach you what Explorer and Navigator support. This is difficult, since they support different things, but feasible if you can strike the right balance. But there are other problems with this approach. We'll deal with those later on.
So, let's make a small recap: There are three specifications for HTML: 2.0, 3.2 and 4.0. None of these was ever supported by a widely popular browser. The most popular browsers today are Netscape Navigator and Microsoft Internet Explorer. The majority of other browsers are close enough to the specification so that you don't have to consider them a separate category. What we're looking for is a sure-fire way of authoring HTML documents that can be both powerful and accessible to the widest possible audience.
Before we find an answer to this question, let's look at how SGML fits into this picture. SGML, as I have mentioned previously, is a markup language that defines markup languages.