Date: Fri, 03 Sep 1993 08:13:10 -0400 (EDT) From: KLENSIN@infoods.mit.edu Subject: Introduction to SGML To: iiir@merit.edu During the telconf on Wednesday, I promised to post some SGML- familiarization stuff to this list. This note is the first of several such pieces.
It is important to understand, when looking at SGML, that it is a descriptive language, really a very high level programming language for text. As such, one can choose to specify particular applications for it in ways that make them very simple and obvious, or one can decide to favor extreme generality, decoration, and complexity for its own sake. I find the second course to be obnoxious, whether encountered in SGML, C, or a conventional data structure. In a way, the greatest strength resulting from the degree of power and generality of SGML is that we are not likely to run out of it and have to start inventing kludges to deal with funny cases. And the greatest weakness is that someone might be tempted to use all that stuff. So I don't want to tell you about the full generality, or what can be done in ultimate cases, or that the "reference syntax" that is used in the examples that follow is just one more set of parameters in the metalanguage that is part of SGML (e.g.., you can decide to use almost any other syntax that obeys certain abstract rules). I also don't want to tell you very much about the "minimization rules", which permit defining what can be left out under various circumstances (In programming language terms, SGML can support "multiple closure". And, as with programming languages, multiple closure can be both a blessing and a curse. But, when I use phrases like "in general" or "usually", it is reasonable for you to assume that most of the alternatives you can think of are possible. So I'm going to try to do this by example, translating a few document examples that have been floating around. When you look at them, note that I'm making style judgements according to my taste: those decisions are dictated by my personal preferences or other considerations, not by constraints imposed by SGML itself. And, to review something I've said several times before, I'm not pushing SGML as the (or a) solution. I just want to make sure it is looked at carefully before something else is chosen. john