# Map Styles

Export can map paragraph and character styles in any word processing format that contains styles (such as Microsoft Word, RTF, or Folio Flat File) to user-defined markup. This feature is useful for shaping the look of the HTML output, or for generating user-defined metadata (including using XML tags) for indexing, searching, and navigation. With this feature, you can redact (hide) text in the source document, delete content, or change the overall structure of the output. You can also embed style sheet styles in the output defined in the HTML.

To enable style mapping, you must indicate which paragraph and/or character styles are to be mapped, and define the starting and ending markup to be included in the HTML output.

For example, if the source Microsoft Word document contains the character style "Recipe," and the content of the style in Microsoft Word is "Brownies," you can specify that the starting markup be `<recipe>` and the ending markup `</recipe>`. This would result in the output HTML containing: `<recipe>`Brownies`</recipe>`.

You can also use style mapping to control the look of the HTML output either by using a Cascading Style Sheet (CSS) or by defining the style directly in the starting markup. For example, if a Word document contains the paragraph style "Colorful", you can have markup of the form `<p><div class="rainbow">` inserted at the front of the paragraph and markup of the form `</div></p>` inserted at the end of the paragraph. "Rainbow" is a CSS style defined in an externally provided CSS file referenced at the top of the HTML output.

Style mapping is enabled in the `wordstyle.ini` template file. You can test it by using the `HTMLWord.doc` test document, which is provided in the directory `install\testdocs`, where `install` is the path name of the Export installation directory.

NOTE: When the user-defined markup in `KVStyle` conflicts with other markup generated by Export, the user-defined markup takes precedence.

## Use the C API

To map styles by using the C API

1. Define the `KVStyle` structure. See KVStyle . The information in this structure includes:

   - the markup to be added to the beginning and end of a paragraph or character style.

   - the name of the word processing style (for example, "Heading 1") to which style mapping applies. Style names are case sensitive.

   - the flag which defines instructions on how to process the content associated with a paragraph or character style. The flags are defined in `kvtypes.h` and described in Flags for Defining Styles.

2. Call the `fpSetStyleMapping()` function. See fpSetStyleMapping().

## Use a Template file

To map styles by using a template file

1. Use the `KVStyle` parameter to specify how many styles are being mapped. For example, if there are nine mapped heading levels, add the following:

       [KVStyle]
       NumStyles=9

2. For each style, there must be a `[StyleX]` entry that contains the markup that appears at the start and end of the defined style. For example, in the `wordstyle.ini` sample file, the first heading level is defined as follows:

       [Style1]
       StyleName=Colorful
       MarkUpStart=<div class="colorful">
       MarkUpEnd=<!-- end of colorful --></div>

   These values are used in `StyleName`, `MarkUpStart`, and `MarkUpEnd` in the `KVStyle` structure. See KVStyle .

3. For each style, define the flag that applies. Flags define instructions on how to process the content associated with a paragraph or character style.

   They are defined in `kvtypes.h` and described in Flags for Defining Styles. This value is used in `dwflags` of the `KVStyle` structure. See KVStyle . The value associated with each flag is a hexadecimal number. You can set an option by either entering the converted decimal value or entering the flag's text.

       Flags=0

A finished entry in a template file could look like this:

    [KVStyle]
    NumStyles=3

    [Style1]
    StyleName=Colorful
    MarkUpStart=<div class="Colorful">
    MarkUpEnd=<!-- End of Colorful --></div>
    Flags=0

    [Style2]
    StyleName=RedactPara
    MarkUpStart=<div class="RedactPara">
    MarkUpEnd=<!-- End of RedactPara --></div>
    Flags=2048

    [Style3]
    StyleName=Code
    MarkUpStart=<pre>
    MarkUpEnd=<!-- End of Code --></pre>
    Flags=KVSTYLE_PRE

Flags for Defining Styles

Flag | Description
--- | ---
`KVSTYLE_PRE` | The `KVSTYLE_PRE` flag specifies that white space should be preserved (treated as characters, not word separators), and that mode changes, such as changes in font size within a paragraph, should be ignored. This allows the tags `<pre>` and `</pre>` to be used.
`KVSTYLE_HEADING[1-6]` | The flags `KVSTYLE_HEADING[1-6]` specify that a given style is to be detected and processed as a heading. Heading flags are exclusive. This means a style cannot be processed as both h1 and h2. By default, Export maps the heading style "Heading 1" to `<h1></h1>`, and so on, for heading levels 1 through 6. If you use style mappings, the default mapping is overridden. Therefore, you must supply markup for all heading levels. HTML Export uses heading levels to define the overall structure of the HTML output.
`KVSTYLE_ORDERLIST` | The `KVSTYLE_ORDERLIST` flag specifies that the style should be tagged as an ordered list. Currently not implemented.
`KVSTYLE_UNORDEREDLIST` | The `KVSTYLE_UNORDERLIST` flag specifies that the style should be tagged as an unordered list. Currently not implemented.
`KVSTYLE_DELETECONTENT` | The `KVSTYLE_DELETECONTENT` flag specifies that the content associated with the style tag should be deleted from the output.
`KVSTYLE_ONCONSECUTIVEPARAGRAPHS` | The `KVSTYLE_ONCONSECUTIVEPARAGRAPHS` flag specifies that the style should be applied to consecutive paragraphs of the document. If this flag is used, and two or more paragraphs require the same style, the opening and closing tags that normally appear between each paragraph are not generated.
`KVSTYLE_REDACT` | The `KVSTYLE_REDACT` flag is used to hide sensitive or confidential information in the source document. It specifies that the text associated with the style tag should be replaced in the HTML output with a selected character. The default replacement character is "X," but you can specify a different replacement character by setting `cRedact`. See cRedact.

_FT_HTML5_bannerTitle.htm