Configuring html report template
Our software is distributed with one HTML report template to be used by default. Naturally, some users may be unsatisfied with the appearance of reports generated with this template. This article is written for those users specifically; it explains how to customize the appearance of reports.
The template is located in the HTML subfolder of the program’s folder, and the file name is template.htm.
Template structure
The template contains text with the special control sequences. The following two types of sequences are available:
- control block "<!--#control command-->...<!--#end-->"
- substitute block "{#substitute source}"
Control block
Each control block places the text located between a block start "<!--#control command-->" and block end <!--#end--> (this is called block body) to the output HTML file. Control block can print one, more than one or none instances of a block body to the output HTML file.
Below is the list of available control blocks.
The "enum" block
Syntax:
<!--#enum item-name-->
block body
<!--#end-->
Description:
This block iterates all subitems of the current item with specified name.
For each subitem, the block body is printed to the output HTML file. For the "item body" parameter you can use:
| childnodes() | In this case, the current item’s subitems will be iterated. |
The "if-has-value" block
Syntax:
<!--#if-has-value value-->
block body 1
<!--#else-->
block body 2
<!--#end-->
Description:
The output HTML will have either "block body 1" or "block body 2", depending on whether the current item does or does not have an unempty "value" parameter.
The "value" parameter may take one of the following:
| @attribute-name | value is not empty, if the current item contains the selected attribute and its value is not an empty string. |
| text() | value is not empty if the current item contains text, and the text value is not an empty string. |
Note: The "else" section may be skipped. In such case, the output HTML file will have the "block body 1" content only when the specified if condition triggers.
The "if-exists" block
Syntax:
<!--#if-exists subitem-name-->
block body 1
<!--#else-->
block body 2
<!--#end-->
Description:
The output HTML file will have either "block body 1", or "block body 2" depending on whether the current item contains at least one subitem named "item name".
Note: The "else" section may be skipped. In such case, the output HTML file will have the "block body 1" content only when the specified if condition triggers.
The "define" block
Syntax:
<!--#define name-->
block body
<!--#end-->
Description:
Defines frequently used block or block which must be generated recursively. Block body is placed to the list of "block templates" under the "name" name. Using of a "block template" (inserted to the appropriate place) is carried out by the "use" control block.
The "use" block
Syntax:
<!--#use name-->
Description:
Inserts a block with the "name" name defined by the "define" block to the specified position.
Substitute blocks
Substitute blocks have the following syntax: {#substitute source}. During generation of the output HTML file, the substitute block will be replaced with the content defined by the "substitute source" parameter.
The "substitute source" parameter may take one of the following:
| @attribute-name | substitute block will be replaced with the current item’s selected attribute value. |
| text() | substitute block will be replaced with the current item’s text. |
This information should be enough to change appearance of the standard HTML report and make it look just the way you wa

Set of free tools making the work of a Microsoft ISA Server administrator easier.
Software for monitoring the efficiency of your company's Internet bandwidth usage.
Using this product you can easily find out who, when, where to, where from and what accessed the Internet.
Works with Microsoft ISA Server and other proxy servers.
Software for monitoring the efficiency of your company's mail server operations.
Using this product, you can easily determine the who, when, where and amount of e-mail that has been sent.
Works with Microsoft Exchange Server and other mail servers.
Software for monitoring your company's printers.
Using this product you can easily find out who, when and how many pages have been printed.
RSS