## 1 Overview

### 1.1 Background

DocBuilder has been used within the OTP project to generate documentation for Erlang/OTP itself for more than ten years. It has now been released as a regular Erlang/OTP application.

The intention with DocBuilder is that it should be as easy to use and maintain as possible and generate adequate documentation for OTP's needs. It uses frames, which can probably be regarded as old-fashioned today. Hopefully, this should be improved in the future.

Originally, DocBuilder input was SGML files and external tools was used for parsing. The internal version used in the OTP project can generate not only HTML code but also LaTeX (for PDF and PostScript) and nroff (for UNIX man pages). (Again, using external tools). Because of this, the parsed source code is transformed into a tree structure before being transformed again into the desired format.

### 1.2 DTD Suite

Input is written as XML according to one of the DTDs and output is corresponding HTML. Documentation for an Erlang/OTP application is usually organized as follows:

User's Guide
  (DTD: part) A collection of chapters (chapter).
Reference Manual
  (DTD: application A collection of manual pages for modules (erlref), applications (appref), commands (comref), C libraries (cref) and files (fileref).
Release Notes
  Same structure as the User's Guide.

In some cases, one or more of the User's Guide, Reference Manual and Release Notes are omitted. Also, it is possible to use either the `application` or `part` DTD to write other types of documentation for the application.

A special kind of DTD, fascicules, can be used to specify the differenct parts of the documentation, and which one of those should be shown as default.

### 1.3 Structure of Generated HTML

The generated HTML corresponding to a `part` or `application` document is split into a left frame and a right frame. The left frame contains information about the document and links to the included files, that is chapters or manual pages. The right frame is used to display either the front page for the document, or the selected chapter/manual page.

The left frame also contains links to a bibliography and a glossary, which are automatically generated.

In the case of an `application` document, the left frame also contains a link to an automatically generated index.

### 1.4 Basic Tags

All DTDs in the DocBuilder DTD suite share a basic set of tags. An author can easily switch from one DTD to another and still use the same basic tags. It is furthermore easy to copy pieces of information from one document to another, even though they do not use the same DTD.

The basic set of tags are divided into two categories: block tags and inline tags. Block tags typically define a separate block of information, like a paragraph or a list. Inline tags are typically used within block tags, for example a highlighted word within a paragraph.

### 1.5 About This Document

In this User's Guide, the structure of the different documents and the meaning of the tags are explained. There are numerous examples of documentation source code.

For readability and simplicity, the examples have been kept as short as possible. For an example of what the generated HTML will look like, it is recommended to look at the DocBuilder documentation itself:

- This User's Guide is written using the `part` and `chapter` DTDs.
- The Reference Manual is written using the `application`, `appref` and `erlref` DTDs.

### 1.6 Usage

1. Create the relevant XML files.
   If there are EDoc comments in a module, the function docb_gen:module/1,2 can be used to generate an XML file according to the `erlref` DTD for this module.
2. The XML files can be validated using docb_xml_check:validate/1.
3. Generate HTML files by using docb_transform:file/1,2.

docbuilder 0.9
Copyright © 1991-2007 Ericsson AB