author: Michel Dagenais
copyright: Michel Dagenais, GNU General Public License, 1997
date: 8 October 1997
keyword: SGML
keyword: HTML
keyword: documentation
keyword: program
keyword: library
keyword: wide audience
keyword: reusable

# Library and Tools for Processing SGML/HTML Documentation

## Abstract

The Standard Generalized Markup Language (SGML) is a structured format for encoding document content. Several SGML Document Type Definitions (DTD) are in common use, like HTML, CALS, and Linuxdoc. A library and several tools have been developped to read and transform SGML documents.

The `sgml` library parses SGML documents according to their DTD. Several tools use the `sgml` library to check the structure of SGML documents (`sgmlstructure`), add the omitted tags (`sgmlnormalize`), convert to other formats (`sgmlconv`), and group a tree of several SGML documents into a larger linear one (`sgmllinear`). The package `sgmlobliq` exports the objects and methods of the `sgml` library to the Obliq interpreter; it was used for a prototype of `sgmlconv`

A number of tools are more directly targeted at documenting Modula-3 packages, based on the `m3doc` system. These include `m3tosgml` and `sgmltom3` to transform Modula-3 interfaces with embedded documentation into HTML documents, `sgmllinear` to group several HTML files and documented Modula-3 interfaces into a large linear HTML document, and `sgmlconv` to convert the resulting HTML file into LaTeX for typesetting and printing. The package `m3textohtml` is used to convert Modula-3 interfaces documented for processing with `m3totex` into interfaces suitable for `m3tosgml`.

## Installation

This is the first release for most of these tools and should be considered alpha. On POSIX systems, you may use the main m3makefile to build at once all the contained packages. The packages are built in two phases. In the first phase all the libraries and programs are constructed; the documentation is not processed since the tools are not built yet. In the second phase, everything is build, including the documentation. The HTML documentation may then be found in HTML_INSTALL/sgmltools/src/index.html and the Postscript documentation in DOC_INSTALL/m3doc/index.ps

- The SGML Parser Library
- Sgmlnormalize: Supplying Omitted SGML Tags
- Sgmlstructure: Print the SGML Tree Structure for a Document
- Sgmlobliq: Access to the SGML Library from the Obliq Interpreter
- M3doc: The Modula-3 Literate Programming System Based on SGML
- M3tosgml: Conversion of Documented Modula-3 Interfaces into HTML
- Sgmllinear: From a Web of HTML documents to a linear document
- Sgmlconv: Conversion from HTML to TeX and Other Formats
- Sgmltom3: Conversion from HTML back to Modula-3 Interfaces
- M3textohtml: Conversion from the M3totex Literate Programming System to M3doc