[comp.text.sgml] SGML Book?

jxr@thumper.bellcore.com (Jonathan Rosenberg) (04/05/91)

I'm sure this question has been asked & answered many times on this
newsgroup, but since I don't usually read this newsgroup, I'm going to
ask it anyway...

I'm looking for a good book to learn SGML.  I want to learn enough to be
able to read/write SGML syntax.  I'm not looking for any particular use
(application?) of SGML, I just want to learn the syntax.

The one book I already have is "SGML: An Author's Guide to the
Standardized General Markup language" by Bryan.  I hope there's
something better than that available (IMHO, this book sucks badly).

Please e-mail responses to me (jxr@thumper.bellcore.com) as I don't
normally read this newsgroup.

JR

enag@ifi.uio.no (Erik Naggum) (04/06/91)

Jonathan,

   I'm sure this question has been asked & answered many times on this
   newsgroup, but since I don't usually read this newsgroup, I'm going
   to ask it anyway...

It's heading for the FAQ...  :-)  (Actually, the proper name for the
FAQ should be OTAQ -- Once or Twice Asked Questions...)

   I'm looking for a good book to learn SGML.  I want to learn enough
   to be able to read/write SGML syntax.  I'm not looking for any
   particular use (application?) of SGML, I just want to learn the
   syntax.

The SGML Handbook by Charles F. Goldfarb is the major reference, but I
don't think it will do you much good, being much wider in scope than
you seem to need right now.  It also takes a lot of effort to read,
although it's both well-written and *much* simpler to read than the
standard (which it includes).  If you look for the syntax, only, you
will have a few problems finding the broader view among all the many
details.  I would like to add that this books is the best thing that
happened to SGML since its inception (IMHO), and I do think you will
find it worth while buying.  I know I did.  I've now completed my
second reading of it, and my estimate of it has only increased.

You should also note that "the syntax of SGML" is usually what is
referred to technically as the "reference concrete syntax".  An SGML
application could come with almost any concrete syntax it likes, as
long as it follows the rules about role delimiters and existence of
the keywords.

I think, however, that what you need is a reference concrete syntax
summary of SGML, and I've been working on it for a while.  Progress
has been a little slow, but I hope I'll be able to finish it next
week, having been spurred by your request.

--
[Erik Naggum]					     <enag@ifi.uio.no>
Naggum Software, Oslo, Norway			   <erik@naggum.uu.no>

dns@sq.sq.com (David Slocombe) (04/08/91)

I agree with Erik Naggum that Charles Goldfarb's book "The SGML Handbook"
is the best thing that happened to SGML (and it *contains* the Standard!!).
And I am very happy to hear that Erik is working on a simpler presentation
for people starting out with SGML.

In the meantime, the following book is (IHMO) an excellent introduction,
and much more "accessible" than Martin Bryan's book (though we owe Martin
a debt for being "the first with the mostest"!):

	Van Herwijnen, Eric.
	Practical SGML.  307pp.
	Kluwer Academic Publishers (1990).
	ISBN 0-7923-0635-X

Another book worth mentioning is an ISO document:

	Berglund, Anders (Editor). 
	Information processing -- SGML support
	facilities -- Techniques for using SGML.  124pp.
	ISO/IEC/TR 9573: 1988(E).
	[ISO publications don't seem to have ISBNs -- are they not books?]

Charles' comment (in the Handbook) about this book is as follows:

	Anders Berglund has edited a technical report, with
	contributions from himself and other users and developers of
	SGML applications.  The report includes techniques and examples
	for both publishing and office documents, mathematical formulas,
	complex tables, graphics, and spreadsheets.  There is a special
	emphasis on the problems of multilingual documents and linguistic
	scholarship, with examples ranging from intermixed Kanji and
	English to Scandinavian Runes.

I can add that Anders was an active member of the ISO SGML Working
Group during the development of SGML, and that this book was improved
greatly by its submission to both the Working Group and to the various
national "member bodies" for criticism.  Thus it combines a lot of the
experience of those most closely involved in the development of the ISO
SGML Standard.

Anders, by the way, is in charge of the computerized production of
all ISO documents in Geneva and was the person responsible for the
conversion of the ISO's own book-production methods to SGML!

This book is *not* a true introduction to SGML, but it is full of
interesting approaches to the application of SGML for those who are
committed to using it.

----------------------------------------------------------------
David Slocombe				(416) 963-8337
Vice-President, Research & Development  (800) 387-2777 (from U.S. only)
SoftQuad Inc.				uucp: {uunet,utzoo}!sq!dns
720 Spadina Ave.			Internet: dns@sq.com
Toronto, Ontario, Canada M5S 2T9	Fax: (416) 963-9575

enag@ifi.uio.no (Erik Naggum) (04/10/91)

I would like to second the recommendation of the Technical Report
(ISO/IEC 9573, be sure not to forget the number! :-).  The next
version of it will cover a wider area and be much improved.  I have no
firm date for its release, but it can't be far away.  If you're reading
this, Anders, thanks for the first TR, and keep up the good work!

On the other hand, I'm not happy to voice my negative concerns about
Eric van Herwijnen's book.  Mostly, this is because I think we all
need a good introductory book to SGML, and that this book is not it.

I read it not long ago, despite my general rule not to pick up books
with "practical" anywhere on the title page.  My feelings with it were
expressed very well by Deborah A. Lapeyre in her review, published in
<TAG> issue 16 (October 1990).  (Subscriptions and back-issues handled
by Patty Hill at the Graphic Communication Assocation (703 519 8160).)

Deborah Lepeyre's review is concise and addresses all the points that
I found valuable and important, even some that I didn't think were
important until she put them in context.  Her review is well balanced,
highlighting strengths and discussing "nits and picks".  In her view,
the book is technically accurate, but I don't quite agree with that:
it tends to understate many important aspects of the language that
readers will want to know about.  To quote from the summary:

	This is not the general SGML introduction that explains
	everything that all SGML users are still looking for.  This
	book is a very personal volume, sort of "Travels Through the
	Land of SGML Software and What I Found There". ...  This book
	packs a lot of SGML application experience into one volume.
	    Along the way ... [it] provides a good programmer-oriented
	introduction to SGML.

I recommend reading the review before you spend time on the book.

--
[Erik Naggum]					     <enag@ifi.uio.no>
Naggum Software, Oslo, Norway			   <erik@naggum.uu.no>

enag@ifi.uio.no (Erik Naggum) (04/12/91)

<!--
	This is the entire text of the review that I mentioned in my
	previous article.  SGML DTD and markup is entirely my own.
-->

<!--
	Typed in from <TAG> Issue 16, October 1990 and distributed
	with permission from the Graphic Communications Association.
-->

<!DOCTYPE article [

<!ENTITY trade SDATA "(TM)" -- trade mark symbol -->

<!ENTITY % phrase "cit|q|fp|hp">

<!ELEMENT article		- -  (title, author, ingres?, h1+, authinfo?)>
<!ELEMENT (author|authinfo)	- O  (#PCDATA)>
<!ELEMENT ingres		- O  (p+)>
<!ELEMENT h1			- -  (h1t, p*, h2*)>
<!ELEMENT h2			- -  (h2t, p*, h3*)>
<!ELEMENT h3			- -  (h3t, p*)>
<!ELEMENT (title|h1t|h2t|h3t)	- O  (#PCDATA|(%phrase))*>
<!ELEMENT p			- O  (#PCDATA|list|(%phrase))*>
<!ELEMENT list			- -  (item+)>
<!ELEMENT item			- O  (#PCDATA|p)*>
<!ELEMENT (%phrase)		- -  (#PCDATA|(%phrase))*>
]>

<article>

<title><cit/Practical SGML/
by Eric van Herwijnen
Kluwer Academic Publishers, 1990
<author>Review by Deborah A. Lapeyre</author>

<ingres>
<p>
<cit/Practical SGML/ was written to fill a specific niche in the
SGML literature.  The author, Eric van Herwijnen, feels that current
published reports of SGML indicate a lack of practical SGML experience.
The <q>principal aim of <cit/Practical SGML/ is to help and encourage
authors, document managers, and computer programmers to start using
SGML</q> by showing them how other people use it.</ingres>

<h1>Contents
<p>The book is divided into three parts:</p>

<h2>Part I: Getting started with SGML
<p>
This portion of the book starts simply, by defining SGML and providing
basic information; what SGML is, why use it, when to use it, and what
SGML is not.  The book then introduces the concept of a DTD and explains
the document components (such as elements, attributes, and entities)
that comprise a tagged instance, introducing a simple office memo which
is used a continuing example throughout the book.  The next chapter
explains in detail the SGML declarations that comprise a simple DTD.
The next chapter discusses DTDs themselves; how to read them, tips for
writing DTDs, and pitfalls to avoid.
<p>
Part I of the book is most appropriate for a person who finds ISO 8879
difficult to read.  Tables are used to describe the ISO 8879 production
rules.  In the tables, SGML productions are described in English with an
example and then a table defines all the parts of the example.  The
section on attribute declarations includes a particularly good
discussion on <q/what is an attribute/ that uses three different
<q/type=/ examples to zero in on the confusion most beginning users have
with the phrase <q/a characteristic quality, other than type or
content/.</h2>

<h2>Part II: Advanced SGML
<p>
is full of examples of SGML features and constructs.  For example, this
section includes:
<list>
<item>Examples of CGM and Postscript&trade; inclusions in an SGML file;
<item>Extensive examples of the use of Marked Sections, including the
constructions of multilanguage SGML documents;
<item>The standard memo example used throughout the book, done as a
shortref/usemap example;
<item>Examples of mathematical formulae coded in TeX, EQN, the ISO
9573 SGML tagset, and the AAP Math SGML tagset; and
<item>A DTD for describing CGM and GKS graphics.
</list>
<p>
This books fills the experience gap by sharing (in various levels of
detail) specific, concrete, practical experiences with many current SGML
applications.  Some SGML applications are described in considerable
detail, including user interface screens, DTD fragments, and computer
program code.  In this way, <cit/Practical SGML/ allows the reader to
participate directly in the author's SGML experiences, including the
experience of using SGML to produce the book itself!  The sections on
minimization and start and end records are quite good, reiterating the
wording of ISO 8879, but giving short, clear examples for each item
discussed.</h2>

<h2>Part III: SGML Implementation
<p>
gives very brief overviews of the SGML parsing function, translation out
of SGML some of the ways SGML tags get into files, the Shouten document
database example, SGML and CALS, and SGML and EDI.  This section is not
all-inclusive, and does not try to be.  For example, the section on
parsers lists <q/some SGML parsers/ and the translation programs
discusses <q/the translation possibilities of some SGML products/.
</h2></h1>

<h1>Useful Features and Strengths
<p>
<list>
<item>Each chapter ends with a quiz to <q/Test Your Understanding/.  The
answers are given in the back of the book.  Don't skip these quizzes;
they sometimes bring up entirely new points not covered in the chapters!
<item>Each chapter (even the glossary) also included as bibliography and
these mini-bibliographies are one of the most interesting features of
the book.
<item>The appendices include an explanation of the author's experiences
and lessons learned when publishing the book <cit/Practical SGML/
using SGML, the DTD that was used to produced the book, some entity
definitions for use with TeX, and a very good <q/How to Read ISO
8879/.  (This appendix explains both how to read an SGML syntax
production and why the average reader shouldn't bother.)
<item>The glossary definitions are simple English definitions,
non-circular, succinct, and much easier for a beginner to understand
than the definitions in ISO 8879 (<fp/e.g./, <q>element: A part of a
document which is a logical entity such as a chapter, section, a title,
a paragraph, and so on.</q>).
</list></h1>

<h1>Technical Accuracy
<p>
I read this book with my copy of ISO 8879 in hand, spot-checking the
definitions and declarative statements.  This book is technically
accurate and always includes all the updates from Amendment One.  The
DTD examples (at least all the shorter ones) parse cleanly.  The REXX
program run.  The FORTRAN examples compile cleanly.  Yes, there are
errors in this book.  But they are very few and likely to be caught in
by an errata sheet before the next edition.</h1>

<h1>Nits and Picks
<p>
I feel that Part I of the book should be called <q/A Programmer's Guide
to SGML/.  In a successful attempt to avoid SGML jargon, this book makes
use of concepts familiar to programmers but not too many editors,
typesetters, writers, lawyers, etc.  Macros, tree traversal, and
pre-order (for example) were explained briefly, but strong data typing
and floating point numbers were never explained at all.  I gave this
book to four SGML neophytes (admittedly a small sample).  The <q/C/
programmer was the happiest, reporting <q/the only good explanation I've
seen that tells me what SGML is all about/.  Two of the others thought
the book got too technical too fast, and should not be given to real
beginners.
<p>
Perhaps because of the publishing background many SGML readers are
assumed to have, we (in general) have a reputation for being critical of
details.  So, the basic question that will be asked is <q/Are there
typos in this book?/ Of course there are, rather a lot.  But although
numerous, the typos are usually in places that don't matter, such as the
introductory sentences in the general text.  The typos are almost never
fatal and never (that I noted) in the parseable examples.  The meaning
is never obscured, even when the grammar or syntax has vanished beneath
a typo.
<p>
Second picky question: Are there errors in the quiz answers?  Yes, but
they are gross errors, not fine errors that could trip an unwary
beginner.  The answers are an accurate reflection of the chapter text.
But in Chapter 3, for example, the answer to question six was omitted,
causing all the rest of the answers to be misnumbered.
<p>
Still another nit: The index was generated by IBM BookMaster.  Warning
for those of you who have never used a Script index: if you can't find
the reference on the page cited, look on the next page!
<p>
More small complaints: The headings of the document don't always match
the text.  For example there is a section called <q/Documenting an
Application/.  The paragraph below the heading explains that what the
author means is <q/explaining the DTD/.  Now a DTD is not an
application, and the paragraphs that follow this heading are neither
good application documentation nor good DTD documentation.  But the text
is a fine example of <q/How to Read a DTD/, a very good <q/explanation
of a DTD/, which was the author's stated intent.
<p>
The book can sometimes be confusing, as when it gives a black and white
picture of a color system, explains that the colors are crucial, and
then doesn't explain the coloring system.  But to pick on these flaws
and ignore the book because of them is to miss the point and purpose of
this volume.  This book is not rigorous and was not intended to be.
This book is an overview of some basic, practical SGML application
(largely, but not exclusively IBM) that are happening in the SGML world
right now.</h1>

<h1>Summary
<p>
This book is not a perfect book.  This is not the general SGML
introduction that explains everything that all SGML users are still
looking for.  This book is a very personal volume, sort of <q>Travels
Through the Land of SGML Software and What I Found There</q>.  You will
want to read it for the same reason that you read any other travel
volume: to acquire vicarious experience before trying out the real
thing; to act as a guide to unfamiliar and uncharted territory; to
compare another traveler's impressions with your own.  This book packs a
lot of SGML application experience into one volume.
<p>
Along the way, the author describes some fascinating SGML application,
details some of the very real problems an SGML'er is likely to face,
provides some useful pointers and DTD samples, and provides a good
programmer-oriented introduction to SGML.</h1>

<authinfo>
Ms. Lapeyre is a Senior Consultant with ManageMatics Corp.
</article>
--
[Erik Naggum]					     <enag@ifi.uio.no>
Naggum Software, Oslo, Norway			   <erik@naggum.uu.no>

jxr@thumper.bellcore.com (Jonathan Rosenberg) (04/19/91)

A few eeeks ago, I posted a request to this newsgroup asking for a
recommendation of a good book to learn SGML.  (I neglected to mention
exactly why I wanted to learn SGML, so let me rectify that here.  I'm
tying to learn SGML well enough to be able to learn the HyTime standard,
which is an SGML application.  For those of you who don't know, HyTime
is a proposed ANSI standard for the representation of hypermedia &
time-based multimedia.)

I promised someone on the net that I would post a summary of the
responses I received.

It's very easy for me to summarize the responses.  Two books were
recommened with great regularity.  The most heavily recommended was
Goldfarb's book:

  The SGML handbook / Charles F. Goldfarb ; edited by Yuri Rubinsky -- Oxford :
Clarendon Press ; Oxford ; New York : Oxford University Press, 1990.
  xxiv, 664 p. ; 24 cm.
  Includes bibliographical references and index.
  ISBN 0198537379 (hard) : $75.00

(Actually, it was $95 from the place I ordered it.)  I have gotten this
book & begun reading it.  It's a monster (big, that is), but so far I'm
enjoying it.  Thanks all for recommending it.

The seond most recommended book was:

Van Herwijnen, Eric.
  Practical SGML / Eric van Herwijnen. -- Dordrecht ; Boston : Kluwer Academic
Publishers, c1990.
  xviii, 307 p. : ill. ; 24 cm.
  Includes bibliographical references and index.
  ISBN 079230635X (alk. paper)

I haven't gotten this one (& may not), but quite a few people seemd to like it.

Several other books received single recommendations.

Thanks for all of your help.

Jonathan Rosenberg