# Generating XHTML with navigation

The toolkit ships with several varieties of XHTML output, each of which follows roughly the same path through the processing pipeline. All XHTML builds begin with the same call to the preprocess routine, after which they generate XHTML files and then branch to create navigation files.

Once the preprocess runs, XHTML based builds each run a common series of Ant targets. Navigation may be created before or after this set of common routines.

- When the CSS parameter is passed to the build to add a CSS file, the `copy-css` target copies that CSS file from its source location to the proper relative location in the output directory.
- When a DITAVAL file is used, the `copy-revflag` target copies the default start and end revision flags into the output directory.
- Two targets names `dita.inner.topics.xhtml` and `dita.outer.topics.xhtml` are used to convert DITA topics into XHTML documents. At this point after the preprocess has completed, each DITA topic document in the temporary directory corresponds to one XHTML output document. The "inner" template is used to process documents that are in the map directory (or subdirectories of that directory). The "outer" template is used to process documents that are outside of the scope of the map, and may end up outside of the designated output directory. Parameters to the build control how documents processed by the "outer" target are handled.

- Default XHTML output
  The `dita.map.xhtml` target is called by default xhtml builds. This target generates a TOC file called index.html, which may be loaded into an independent frameset.
- Eclipse help output (transform type "eclipsehelp")
  Eclipse help is an XHTML based output format intended to create a plug-in for the Eclipse Help system. Once the normal XHTML process has run, the `dita.map.eclipse` target is used to create a set of several control files and navigation files for Eclipse.
- TocJS output path
  The TocJS transform type was originally created as a plug-in distributed outside of the toolkit, but now ships bundled in the default packages. This XHTML based output type creates a JavaScript based frameset with TOC entries that expand and collapse.
- Compiled Help (CHM) output
  The transform type "htmlhelp" is used to create HTML Help control files. If the build runs on a system that has the HTML Help compiler installed, the control files will be compiled into a CHM file.
- Javahelp output
  The "javahelp" transform type runs several additional Ant targets after the XHTML process is completed in order to create control files for JavaHelp output.

Parent topic: DITA Open Toolkit Architecture