Sorry, but I am going to be doctrinaire about this. SGML is not meant to
be read by people. If you want to pretty-print it, use something like
LECTOR which will deal with the things that SGML tags identify properly,
and without any tags at all. The SGML standard is fairly idiosyncratic
in its rules about where white space and record ends are significant (it
isn't illogical -- just different from what you might expect). Depending
on the particular content model, it is quite likely that some parseable
document might become unparseable if pretty-printed à la Amsler.
In which case, there's no point in not going the whole hog and
formatting them beautifully. There's a useful summary of the relevant
rules in van Herwijnen so I won't rehearse them here.