3. Custom conversion specifications

## 3. Custom conversion specifications

A custom conversion specification is simply a text file, UTF-8 encoded, containing a number of w2x command-line options separated by space or new line characters.

Example 1. Simple example used to generate a DocBook v4.5 `book` possibly containing CALS (not HTML) tables

    -o docbook
    -p convert.set-column-number yes
    -p transform.cals-tables yes

Example 2. Advanced example used to convert XMLmind Word To XML Manual to a DITA bookmap

Custom conversion specification file ``w2x_install_dir`/doc/manual/bookmap_options.txt`:

    -p edit.prune.preserve p-ProgramListing
    -p edit.inlines.convert " c-Code code ! c-Abbrev abbr "
    -p edit.blocks.convert "p-Term dt g:id='dl' g:container='dl' !¬
     p-Definition dd g:id='dl' g:container='dl' !¬
     p-ProgramListing span g:id='pre' g:container='pre'"
    -pu edit.after.blocks customize/notes.xed
    -p transform.root-topic-id manual
    -p transform2.topic-path manual_bookmap_topics
    -p transform2.section-depth 6
    -o bookmap
    -t customize/custom_topic.xslt

where `customize/notes.xed` is:

    namespace "http://www.w3.org/1999/xhtml";
    namespace html = "http://www.w3.org/1999/xhtml";
    namespace g = "urn:x-mlmind:namespace:group";

    for-each /html/body//p[get-class("p-Note")] {
        delete-text("note:\s*", "i");
        if content-type() <= 1 and not(@id) {
            delete();
        } else {
            remove-class("p-Note");
            set-attribute("g:id", "note_group_member");
            set-attribute("g:container", "div class='role-note'");
        }
    }

    group();

and `customize/custom_topic.xslt` is:

    <xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
      xmlns:h="http://www.w3.org/1999/xhtml"
      exclude-result-prefixes="h">

    <xsl:import href="w2x:xslt/topic.xslt"/>

    <xsl:template match="h:div[@class = 'role-note']">
      <note>
        <xsl:call-template name="processCommonAttributes"/>
        <xsl:apply-templates/>
      </note>
    </xsl:template>

    <xsl:template match="h:code">
      <tt>
        <xsl:call-template name="processCommonAttributes"/>
        <xsl:apply-templates/>
      </tt>
    </xsl:template>

    </xsl:stylesheet>

Note that relative URIs referenced by `-pu` options are relative to the text file containing the custom conversion specification. For example, `customize/notes.xed` referenced in ``w2x_install_dir`/doc/manual/bookmap_options.txt` is in fact ``w2x_install_dir`/doc/manual/customize/notes.xed`.

2. Converting a DOCX file |  | 3.1. Using the setup assistant to create custom conversion specifications