# 1 How to Build OTP like documentation

###
1.1 Utilities to prepare XML files

####
Create XML files from code

If there are EDoc comments in a module, the escript xml_from_edoc.escript can be used to generate an XML file according to the erlref DTD for this module.

Example:

    	1> escript $ERL_TOP/lib/erl_docgen/priv/bin/xml_from_edoc.escript ex1.erl

####
Include code in XML

If there are OTP DTD codeinclude tags in the source XML file, the escript codeline_preprocessing.escript can be used to include the code and produce an XML file according to the OTP DTDs.

Example:

    	1> escript $ERL_TOP/lib/erl_docgen/priv/bin/codeline_preprocessing.escript \
    	   ex1.xmlsrc ex1.xml

###
1.2 Use xsltproc to generate different output formats

####
Parameters used in all the the XSL transformations

These parameters to xsltproc are used for all the supported output formats.

docgen
  Path to erl_docgen's top directory.
gendate
  The date string that will be used in the documentation.
appname
  The name of the application.>
appver
  The version of the application.

####
Generate HTML output

When generating HTML one also needs these three pramaters to xsltproc.

outdir
  Output directory for the produced html files.
topdocdir
  If one builds a standalone documentation for an application this should be set to ".".
pdfdir
  Relative path from the html directory to where the pdf file are placed.

Example:

    	1> xsltproc --noout --stringparam outdir /tmp/myhtmldoc \
    	      --stringparam docgen $ERL_TOP/lib/erl_docgen \
                  --stringparam topdocdir . \
                  --stringparam pdfdir $PDFDIR \
                  --xinclude \
    	      --stringparam gendate "December 5 2011" \
                  --stringparam appname MyApp \
                  --stringparam appver 0.1 \
                  -path $ERL_TOP/lib/erl_docgen/priv/dtd \
                  -path $ERL_TOP/lib/erl_docgen/priv/dtd_html_entities \
    	      $ERL_TOP/lib/erl_docgen/priv/xsl/db_html.xsl mybook.xml

####
Generate PDF

The generation of the PDF file is done in two steps. First is xsltproc used to generate a .fo file which is used as input to the fop command to produce th PDF file.

Example:

    	1> xsltproc --output MyApp.fo \
                 --stringparam docgen $ERL_TOP/lib/erl_docgen \
    	     --stringparam gendate  "December 5 2011" \
                 --stringparam appname MyApp \
                 --stringparam appver 0.1 \
                 --xinclude \
                 -path $ERL_TOP/lib/erl_docgen/priv/dtd \
                 -path $ERL_TOP/lib/erl_docgen/priv/dtd_html_entities \
    	     $ERL_TOP/lib/erl_docgen/priv/xsl/db_pdf.xsl mybook.xml

            2> fop -fo MyApp.fo -pdf MyApp.pdf

####
Generate man pages

Unix man pages can be generated with xsltproc from XML files written according to the different OTP ref type DTDs.

Example:

    	1> xsltproc --output  my_module.3\
    	      --stringparam docgen $ERL_TOP/lib/erl_docgen \
    	      --stringparam gendate  "December 5 2011" \
    	      --stringparam appname MyApp \
    	      --stringparam appver 0.1 \
    	      --xinclude -path $ERL_TOP/lib/erl_docgen/priv/dtd  \
                  -path $ERL_TOP/lib/erl_docgen/priv/dtd_man_entities \
                  $ERL_TOP/lib/erl_docgen/priv/xsl/db_man.xsl my_refpage.xml

####
Upcoming changes

The output from the erl_docgen documentation build process is now just the OTP style. But in a near future we will for example add the possibility to change logo, color in the PDF and style sheet for the HTML.