SGML CD: A Complete SGML Toolkit
Author: Bob DuCharme
Publisher: Prentice Hall
Price: $49.95 US
Reviewer: Terry Dawson
SGML CD is not a text from which to learn SGML. SGML CD introduces a variety of readily available free software packages that assist authors in editing, validating and processing SGML.
Bob DuCharme evidently has a great deal of experience in SGML and his writing reflects this. His writing style is the simple and relaxed style of someone who understands the material covered and wants you to understand it too.
SGML CD includes a CD-ROM containing versions of each of the software packages described in the text. The software versions supplied are for Microsoft Windows 3.1, 95 and NT operating systems. Unix versions of nearly all of the packages are available, and most of these are already supplied in modern Linux distributions. I'd have been pleased if the source code for the applications had been provided on the CD-ROM, but instead it provides references describing the location of the software on the Internet. You will have no difficulty locating the code you need.
The text describes one tool per chapter. The main topics covered are:
Editing SGML documents with the Emacs text editor
Parsing and validating SGML Documents with nsgmls
Formatting Documents with DSSSL (Document Style Semantics and Specification Language) specifications and jade
Analysing Documents with the perlSGML tools
Developing SGML Applications with Perl
Developing Windows SGML Applications with SGMLC-Lite
Some 100 pages of the text cover Emacs. The chapter begins with a brief tutorial on Emacs use, but most of the chapter is dedicated to the Emacs PSGML mode, which is a toolkit of Emacs macros to assist SGML authors. I've never been particularly fond of Emacs, but reading this chapter very nearly convinced me to take another look. The PSGML mode provides an edit-time facility capable of detecting and correcting certain types of common SGML formatting errors, such as incorrect or missing tags, and assists with document structuring by providing automatic context-based indentation and SGML syntax highlights. Information is provided on everything from installation through the use of the PSGML mode.
A chapter each is dedicated to two of James Clark's programs—nsgmls and jade. nsgmls is an SGML validator; that is, it checks a marked-up SGML document for syntax and structural errors. jade is an implementation of the International Standards Organisation's DSSSL. DSSSL allows you to describe how you want an SGML document to appear in a format-independent way. jade is an SGML formatter; it takes an SGML document and a DSSSL specification and produces a formatted output file. Current versions of jade are able to produce TeX or Microsoft RTF output formats. These chapters are the two that I found most interesting. Both nsgmls and jade are covered in some detail, but you'll want a separate DSSSL reference if you want to exploit jade seriously.
The perlSGML package developed by Earl Hood is described in some detail. This collection of tools written in Perl assists the SGML author by providing ways of analysing the Document Type Definition (DTD) file that defines the structure of an SGML document. For example, dtdtree and dtdhtml analyse a DTD and provide output that describes the relationship of the various structural elements that make up the document. These can be very useful when learning a new DTD.
The remaining chapters provide an overview of two packages that may be used to develop SGML applications. The first package is two versions of the sgmls.pl program for Perl, and the second is the SGMLC-lite application for Microsoft Windows. The text describes their use and provides hints that will certainly be of value if you are using either of them.
SGML CD does a good job of introducing the reader to some powerful, useful and free SGML processing tools. Those of you with an interest in writing conformant HTML should use the tools described in this book with the appropriate DTD to validate your work. If you are intending to use SGML, then I recommend this book. If you're intending to learn SGML, get yourself a good text describing SGML and let SGML CD be your SGML tool reference.