By using this definition, we can avoid having to re-invent the wheel: clearly, the world does not need yet another DTD for man pages. Since XML is a subset of the Standard Generalized Markup Language (SGML), we do not need to change the projects objective; in fact, this will make it the more portable and useful!
``DocBook'' itself is an SGML type definition used broadly in various Open
Source: ``The Linux Documentation Project'' for example strongly recommends
DocBook for writing a HOWTO. Various applications are able to read and write
``DocBook'' and conversion tools to other formats exist.
Before we go on, we need to understand how ``DocBook'' in general and RefEntry in particular work, so it is recommended that the readers follow the
link in the references to familiarize themselves with SGML and DocBook. A
careful study of the examples given in [21] let us almost
instantaneously create a template from which we will deduce precise examples.
See Listing
.
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook V4.1//EN">
<!--
``MakeMan'' SGML Template for a man page
For more Information, please see http://mama.sourceforge.net
$Author: Jan Schaumann <jschauma@netmeister.org> $
$Id: man.template.sgml, v 0.2 2001/08/20 16:58:33 jschauma Exp $
-->
<refentry id="name">
<refmeta>
<refentrytitle>name.pl</refentrytitle>
<manvolnum>section</manvolnum>
<refmiscinfo class="date">Month Day, Year</refmiscinfo>
<refmiscinfo class="source">Package</refmiscinfo>
<refmiscinfo class="title">Title</refmiscinfo>
</refmeta>
<refnamediv>
<refname>name</refname>
<refpurpose>short description</refpurpose>
</refnamediv>
<refsynopsisdiv>
<cmdsynopsis>
<command>name</command>
<arg choice="opt" rep="repeat">OPTION</arg>
<arg choice="req">FILE</arg>
</cmdsynopsis>
</refsynopsisdiv>
<refsect1>
<title>DESCRIPTION</title>
<para>
Write a long description in here. Do not explain the details of
the options, which will be below, but the general usage.
</para>
<para>
<command>name</command> is usually written in bold when mentioned,
<emphasis>References\</emphasis> in italics.
</para>
</refsect1>
<refsect1>
<title>USAGE</title>
<para>
Detailed usage. If the program requires certain perparation
before running, explain what needs to be done here. Detailed
explanation of unintuitive options may go here, as well.
</para>
</refsect1>
<refsect1>
<title>OPTIONS</title>
<para>
This program follows the usual GNU command line syntax,
with long options starting with two dashes (`--'). A
summary of the options supported by <command>name</command>
is included below.
</para>
<variablelist>
<varlistentry>
<term>-h, --help</term>
<listitem>
<para>Show summary of options and exit.</para>
</listitem>
</varlistentry>
<varlistentry>
<term>-v, --version</term>
<listitem>
<para>Show version information and exit.</para>
</listitem>
</varlistentry>
</variablelist>
</refsect1>
<refsect1>
<title>REQUIRES</title>
<para>
Prerequisites that need to be met for this program.
</para>
</refsect1>
<refsect1>
<title>VERSION</title>
<para>
Version Number
</para>
</refsect1>
<refsect1>
<title>BUGS</title>
<para>
Explain known bugs here.
</para>
</refsect1>
<refsect1>
<title>SEE ALSO</title>
<para>
<command>related(1)</command>
</para>
<para>
<ulink url="http://somewhere.else">http://somewhere.else</ulink>
</para>
</refsect1>
<refsect1>
<title>AUTHOR</title>
<para>
<address>
<firstname>First Name</firstname>
<surname>Last Name</surname>
<email>email@address.org</email>
</address>
</para>
</refsect1>
</refentry>
www:~/xml> nsgml -s man.template.sgml
If we do not get any error messages, we know that the file ``man.template.sgml'' contains valid SGML. For a detailed description of ``nsgmls'', please see nsgmls(1).