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