[Archive copy mirrored from the URL: http://www.snee.com/bob/sgmlfree/toc.html; see this canonical version of the document.]

SGML CD: Free SGML Software and How to Use It

1 Introduction
  This Book's Approach
  The Programs
  What This Book Assumes You Know
  Getting and Using the Software
  Useful Installation Utilities
  Further Research
  The Future

2 Editing SGML Data with the Emacs Text Editor
  Getting Emacs
  Editing Text Files with Emacs
    Starting and Quitting Emacs
    Emacs Commands
    Moving Your Cursor Around
    Editing and Deleting Text
    Saving Edits
    Copying, Moving, and Deleting Blocks of Text
    Searching for Text, Replacing Text
    Editing Multiple Files
    Completion
    Using Multiple Emacs Windows
  Customizing Emacs
    Recording and Executing Macros
    Emacs LISP
    Setting Emacs Variables to Control Its Behavior
    Available On-line Help
  Editing SGML Documents with Emacs and PSGML
    Installing PSGML
    Starting Up PSGML
    SGML Declarations and DTDs
  Using PSGML
    PSGML Startup Variables
    Entering PSGML Commands
    Entering Text
      Splitting the Live Element
      Inserting Tags Around Existing Text
      Inserting Elements with the Menu
      Justifying Element Text
      Indenting Text
    Moving Your Cursor Around an SGML Instance
    Deleting, Moving, and Copying Elements
      Copying Elements
    Editing Attributes
    Finding Tagging Mistakes
      Validator Output
      Changing the Validation Command
    Other Handy PSGML Features
      Displaying Markup in Different Fonts and Colors
      Normalizing Document Instances
      Help Entering Entity References and Markup Declarations
      Showing the Live Element's Context
  Quick Reference of Emacs and PSGML Keystrokes

3 Parsing and Validating SGML Documents with nsgmls
  Getting nsgmls
    What You Get
  Running nsgmls
    Finding DTDs
  Validating Documents
    Finding Errors
      Typical Tagging Errors
      Finding Attribute Problems
      Finding DTD Problems
      nsgmls and the SGML Declaration
    Telling nsgmls to Be Pickier
  Using nsgmls Parsed Output
    The Output
      Processing the Output
      Sending Text to Your Program and Saving Processed Output
      Saving Error Messages Separately from Program Output
      Other Output Possibilities

4 Formatting Documents with DSSSL Specifications and Jade
  Installing Jade
  Running Jade
  A Short Example
  Flow Objects and Sosofos
  Popular Flow Object Classes
    Defining a Basic Page Style: simple-page-sequence
    Specifying Format Variations: sequence
    Formatting Individual Paragraph Types: paragraph
    Formatting Groups of Paragraphs: display-group
    Displaying Graphics: external-graphic
    Flow Object Classes in jade_ex1.dsl
  A More Complex Example
    Using DSSSL Variables and Functions
    Itemized and Ordered Lists
    Inline Elements and Graphics
  Taking Advantage of DSSSL's Power
    Constants
    Defined Styles
    Writing New DSSSL Functions
  HTML Output

5 Analyzing DTDs with the perlSGML Tools
  Running Perl Scripts
  Installing the perlSGML Tools
  Documentation
  Built-in Help
  Creating a Tree-like Picture of a DTD: dtdtree
    Saving Output
    Creating a DTD Tree of Part of a DTD
  Creating a Hypertext Report on a DTD: dtd2html
    Including Entities in the Report
    Generating Quick Reference Reports
    Generating an HTML Tree Representation of the DTD Structure
    Adding Further Documentation to the HTML Files
      Adding Comments
      Adding Comments to Sample HTML Output
      Updating Your DTD
  Making Interactive Queries About a DTD: dtdview
    Navigating the DTD
    Asking dtdview About the DTD
    Saving dtdview Command Output and Running Scripts
  Finding the Differences between two DTDs: dtddiff
    Generating a DTD Difference Report
  Stripping the Tags from an SGML Document Instance: stripsgml
    Using stripsgml
    Entities
    HTML Files
    stripsgml and non-SGML Files

6 Developing SGML Applications with Perl
  Perl Basics
  Perl 4 and sgmls.pl
    RTF
    sgmls.pl
      Selective Element Printing
      Accessing Attribute Values
      Fancier Program Logic: Dealing with Lists
      Putting It All Together
      Using html2rtf.pl
  Perl 5 and SGMLS.pm
    SGMLS.pm as a Class Library
    Installing SGMLS.pm
    Available Documentation
    Using SGMLS.pm
    Event-driven Processing with sgmlspl.pl
      Running sgmlspl.pl with an event handler file
      Writing Event Handlers
      Creating sgmlspl.pl Specification Files with skel.pl

7 Developing Windows SGML Applications with SGMLC-Lite
  Installation
    What You Get
  Starting It Up
  Writing and Running an SGMLC Application
  Rules Files
    Running a Rules File
    Assigning Additional Rules Files to a DTD
    Deregistering Rules Files
  SGML Declarations
  Developing Document Conversion Applications
    Prompting for User Input and Setting up Output Streams
    Accessing Attribute Values
    Default Event Handlers
    Mapping SDATA Entities
  Developing Interactive Applications
  Other SGMLC-Lite Features

8 Interesting Publicly Available SGML Documents
  Downloading the Documents
  Nice Data if You Can Parse It: The World Wide Web
  Classics of World Literature: The Oxford Text Archive
  Middle English and American Verse: The Humanities Text Initiative
  Diaries, Pamphlets, and Other Historical Documents: American Memory
  Victorian Women Writers Project
  Finding Aids for Archival Collections
  Duke University Special Collections Library
  Thesaurus Linguarum Hiberniae
  Internal Revenue Service

9 SGML for Free: Building a Complete System
  DTD Composition, Analysis and Navigation
  Composing and Editing SGML Documents
  Ensuring Validity of Documents
  Previewing a Formatted Document
  Printing a Formatted Document
  Converting SGML Documents to Other Formats and Documents