# KVXMLTemplate

This structure defines the overall framework of the XML output. Members in this structure define the XML markup written at specific points in the output stream. The pointers contain XML markup that might include embedded KeyView-defined tokens. The XML markup contained in these strings should be well-formed. For the generated document to be valid, the markup must conform to the Verity DTD. The structure is initialized by calling the `fpConvertStream()` or `KVXMLConvertFile()` function. See fpConvertStream() or KVXMLConvertFile().

    typedef struct tag_KVXMLTemplate
    {
        char     *pszMainTop;
        char     *pszMainBottom;
        char     *pszFirstH1Start;
        char     *pszFirstH1End;
        char     *pszMiddleH1Start;
        char     *pszMiddleH1End;
        char     *pszLastH1Start;
        char     *pszLastH1End;
        char     *pszH[2..6]XML;
        char     *pszTOCH[1..6]Start;
        char     *pszTOC_H[1..6];
        char     *pszTOCH[1..6]End;
        char     *pszXFile;
        char     *pszXStartBlock;
        char     *pszXEndBlock;
        char     *pszStartBlock;
        char     *pszEndBlock;
        BOOL      bPutBlocksInSeparateFiles;
        BOOL      bHardPageMakesNewBlock
        long      lcbBlockSize;
        char     *pszChunkTemplate;
        char     *pszUserSummary;
        char     *pszTOCH[1..6]LeafNode;
    }
    KVXMLTemplate;

## Member Descriptions

`pszMainTop` | The markup and tokens inserted at the beginning of the main XML file. Most of the sample template files feature `<MetaData>` tags with tokens that store the metadata of the input document. This member does not include the processing instructions or document type declarations that appears at the beginning of an XML document. The document type declaration `<?xml version= ...>` is automatically generated by XML Export. If you are using style sheets or the Verity DTD, the `<?xml stylesheet= ...>` and `<!DOCTYPE ...>` processing instructions are also automatically generated by XML Export.
`pszMainBottom` | The markup and tokens inserted at the end of the main XML file.
`pszFirstH1Start` | The markup and tokens inserted at the beginning of the first created H1 XML block (that is, the block associated with the first H1 table of contents entry).
`pszFirstH1End` | The markup and tokens inserted at the end of the first created H1 XML block (that is, the block associated with the first H1 table of contents entry).
`pszMiddleH1Start` | The markup and tokens inserted at the beginning of those H1 XML blocks that are neither the first nor the last H1 blocks created (that is, blocks associated with all but the first and last H1 table of contents entries).
`pszMiddleH1End` | The markup and tokens inserted at the end of those H1 XML blocks that are neither the first nor the last H1 blocks created (that is, blocks associated with all but the first and last H1 table of contents entries).
`pszLastH1Start` | The markup and tokens inserted at the beginning of the last created H1 XML block (that is, the block associated with the last H1 table of contents entry).
`pszLastH1End` | The markup and tokens inserted at the end of the last created H1 XML block (that is, the block associated with the last H1 table of contents entry).
`pszH[2..6]XML` | The markup and tokens inserted in an XML block for heading levels 2 through 6.
`pszTOCH[1..6]Start` | The markup and tokens inserted at the beginning of a table of contents block for heading levels 1 through 6 entries. For example: `<ol list-style-type="upper-roman">`
`pszTOC_H[1..6]` | The markup and tokens required to process the table of contents entries for heading levels 1 through 6. For example: `<a xmlns:xlink="http://www.w3.org/TR/xlink" xlink href= "#$ANCHOR"> $TOCTE</a>` If the table of contents heading contains special characters, such as an ampersand (&) or parentheses, you must use the `$TOCPE` token in the `pszTOC_H[1..6]` markup. This token retains character entities and prevents validity errors. See Export Tokens for more information on table of contents tokens.
`pszTOCH[1..6]End` | The markup and tokens inserted at the end of a table of contents block for heading levels 1 through 6 entries. For example: `</ol>`
`pszXFile` | The markup and tokens generated and placed in an extra XML file. This file holds content from the source document. To process this file, you would use the `$XANCHOR` token. See Export Tokens for more information on Export tokens.
`pszXStartBlock` | The markup and tokens inserted at the beginning of each XML block generated by the `$XANCHOR` token. If either this member or `pszXEndBlock` is defined, both `pszStartBlock` and `pszEndBlock` are ignored. See Export Tokens for more information on Export tokens.
`pszXEndBlock` | The markup and tokens to include in the outoput output at the end of each XML block generated by the `$XANCHOR` token. If either this member or `pszXStartBlock` is defined, both `pszStartBlock` and `pszEndBlock` are ignored. See Export Tokens for more information on Export tokens.
`pszStartBlock` | The markup and tokens inserted at the beginning of each block created as a result of `lcbBlockSize` or `bHardPageMakesNewBlock`.
`pszEndBlock` | The markup and tokens inserted at the end of each block created as a result of `lcbBlockSize` or `bHardPageMakesNewBlock`.
`bPutBlocksInSeparateFiles` | Set `bPutBlocksInSeparateFiles` to `TRUE` to create a separate XML file for each heading level 1 block. Each new block uses the markup defined in `pszStartBlock` and `pszEndBlock`. If you set `bPutBlocksInSeparateFiles` to `FALSE`, each heading level 1 block is placed sequentially in the same file, after the initial markup is written.
`bHardPageMakesNewBlock` | Set `bHardPageMakesNewBlock` to `TRUE` to have hard page breaks in the source document generate new XML files during the conversion process. The member `pszchunktemplate` provides the appropriate table of contents entry for the new block. This option applies to word processing documents and spreadsheets only.
`lcbBlockSize` | The maximum size (in bytes) of heading level 1 XML output files. This number is used as a guideline and can be exceeded to break content at a logical location. This setting is not used when exporting spreadsheets. Setting `lcbBlockSize` to `0` indicates that there is no maximum size.
`pszChunkTemplate` | If an H1 XML block is subdivided into separate files as a result of the size limitations specified in `lcbBlockSize`, this member provides a template for creating a table of contents entry for the new file. The block number can be made a part of this template by inserting the `$SPLITBLOCKNUMBER` token. For example: `Page $SPLITBLOCKNUMBER`
`pszUserSummary` | The markup and tokens generated when the `$USERSUMMARY` or `$SUMMARY` tokens are used. For example: `<MetaData name="$NAME" content="$CONTENT"/>`
`pszTOCH[1..6]LeafNode` | The markup that replaces `pszTOC_H[1..6]` entries for leaf nodes in the table of contents. A leaf node is a node that has no children.

## Discussion

A pointer to this structure is passed as an argument to `fpConvertStream()` and `KVXMLConvertFile()`. If the pointer to the structure is not `NULL`, the values of the members specified in the structure are used. If the pointer to the structure is `NULL`, the default values are used.

_FT_HTML5_bannerTitle.htm