Chapter 11. The Lire Report Specification Markup Language
Prev | Part III. Developer's Reference | Next

## Chapter 11. The Lire Report Specification Markup Language

## The Lire Report Specification Markup Language

Document Type Definition for the Lire Report Specification Markup Language.

This DTD defines a grammar that is used to specify reports that can be generated by Lire. Elements of this DTD uses the http://www.logreport.org/LRSML/ namespace that is usually mapped to the `lire` prefix.

The latest version of that DTD is 2.1 and its public identifier is -//LogReport.ORG//DTD Lire Report Specification Markup Language V2.1//EN™. Its canonical system identifier is http://www.logreport.org/LRSML/2.1/lrsml.dtd.

    <!--
                                                                       -->

    <!--                    Namespace prefix for validation using the
                            DTD                                        -->
    <!ENTITY % LIRE.xmlns.pfx    "lire"                                  >
    <!ENTITY % LIRE.pfx          "%LIRE.xmlns.pfx;:"                     >
    <!ENTITY % LIRE.xmlns.attr.name "xmlns:%LIRE.xmlns.pfx;"             >
    <!ENTITY % LIRE.xmlns.attr
      "%LIRE.xmlns.attr.name; CDATA #FIXED 'http://www.logreport.org/LRSML/'">

    <!ENTITY % LRCML.xmlns.pfx    "lrcml"                                 >
    <!ENTITY % LRCML.pfx          "%LRCML.xmlns.pfx;:"                    >
    <!ENTITY % LRCML.xmlns.attr.name "xmlns:%LRCML.xmlns.pfx;">
    <!ENTITY % LRCML.xmlns.attr
      "%LRCML.xmlns.attr.name; CDATA #FIXED 'http://www.logreport.org/LRCML/'">

This DTD uses the common modules lire-types.mod which defines the data types recognized by Lire and lire-desc.mod which is used to include a subset of DocBook in description and text elements.

    <!ENTITY % lire-types.mod PUBLIC
        "-//LogReport.ORG//ENTITIES Lire Data Types V1.0//EN"
        "lire-types.mod">
    %lire-types.mod;

    <!ENTITY % lire-desc.mod PUBLIC
        "-//LogReport.ORG//ELEMENTS Lire Description Elements V2.0//EN"
        "lire-desc.mod">
    %lire-desc.mod;

Each report specification is a XML document which has one `report-spec` as its root element. This DTD can also be used for filter specification which have one `global-filter-spec` as root element.

    <!ENTITY % LIRE.report-spec     "%LIRE.pfx;report-spec"              >
    <!ENTITY % LIRE.global-filter-spec "%LIRE.pfx;global-filter-spec">
    <!ENTITY % LIRE.display-spec    "%LIRE.pfx;display-spec"             >
    <!ENTITY % LIRE.param-spec      "%LIRE.pfx;param-spec"               >
    <!ENTITY % LIRE.param           "%LIRE.pfx;param"                    >
    <!ENTITY % LIRE.chart-configs   "%LIRE.pfx;chart-configs"            >
    <!ENTITY % LRCML.param          "%LRCML.pfx;param"                   >
    <!ENTITY % LIRE.filter-spec     "%LIRE.pfx;filter-spec"              >
    <!ENTITY % LIRE.report-calc-spec "%LIRE.pfx;report-calc-spec"        >

    <!ELEMENT %LRCML.param; (#PCDATA|%LRCML.param;)*                     >
    <!ATTLIST %LRCML.param;
                 name      NMTOKEN                             #REQUIRED
                 value     CDATA                               #IMPLIED  >

### `report-spec` element

Root element of a report specification. It contains descriptive elements about the report specification (`title`, `description`). It contains the display elements that will be in the generated report (`display-spec`).

It contains specification for the parameters that can be used to customize the report generated from this specification (param-spec). Finally, it contains elements to specify a filter expression which can be used to select a subset of the records (`filter-spec`) and the expression to build the report (`report-calc-spec`).

`report-spec`'s attributes

id

  the name of the superservice for which this report is available : i.e. email, www, dns, etc.

schema

  The DLF schema used by the report. This defaults to the superservice's schema, but can be one of its derived or extended schema.

joined-schemas

  A whitespace delimited list of additional schemas that will be joined for this report. This will make all fields define in these schemas available for the operators. The schemas that can be joined depends on the specification's schema.

id

  An unique identifier for the report specification

    <!ELEMENT %LIRE.report-spec;
                            (%LIRE.title;, %LIRE.description;,
                             (%LIRE.param-spec;)?, %LIRE.display-spec;,
                            (%LIRE.filter-spec;)?, (%LIRE.chart-configs;)?,
                            %LIRE.report-calc-spec;)
                                                                         >
    <!ATTLIST %LIRE.report-spec;
                 id             ID                              #REQUIRED
                 superservice   %superservice.type;             #REQUIRED
                 schema         NMTOKEN                         #IMPLIED
                 joined-schemas NMTOKENS                        #IMPLIED
                 %LIRE.xmlns.attr;
                 %LRCML.xmlns.attr;                                       >

### `global-filter-spec` element

Root element of a filter specification. It contains descriptive elements about the filter specification (`title`, `description`). It contains the display elements that will be used when that filter is used in a generated report (`display-spec`). It contains specification for the parameters that can be used to customize the filter generated from this specification (`param-spec`). Finally, it contains element to specify the filter expression which can be used to select a subset of the records (`filter-spec`).

`global-filter-spec`'s attributes

superservice

  the name of the superservice for which this filter is available : i.e. email, www, dns, etc.

schema

  the DLF schema used by the report. This defaults to the superservice's schema, but can be one of its derived or extended schema.

joined-schemas

  A whitespace delimited list of additional schemas that will be joined for this report. This will make all fields define in these schemas available for the operators. The schemas that can be joined depends on the specification's schema.

id

  An unique identifier for the filter specification

    <!ELEMENT %LIRE.global-filter-spec;
                            (%LIRE.title;, %LIRE.description;,
                             (%LIRE.param-spec;)?, %LIRE.display-spec;,
                            (%LIRE.filter-spec;))
                                                                         >

    <!ATTLIST %LIRE.global-filter-spec;
                 id             ID                              #REQUIRED
                 superservice   %superservice.type;             #REQUIRED
                 schema         NMTOKEN                         #IMPLIED
                 joined-schemas NMTOKENS                        #IMPLIED
                 %LIRE.xmlns.attr;                                       >

### `display-spec` element

This element contains the descriptive element that will appear in the generated report.

It contains one title and may contains one description which will be used as help message

This element has no attribute.

    <!ELEMENT %LIRE.display-spec; (%LIRE.title;, (%LIRE.description;)?)  >

### `param-spec` element

This element contains the parameters than can be customized in this report specification.

This element doesn't have any attribute.

    <!ELEMENT %LIRE.param-spec; (%LIRE.param;)+                          >

### `param` element

This element contains the specification for a parameter than can be used to customize this report.

This element can contains a `description` element which can be used to explain the parameter's purpose.

It is an error to define a parameter with the same name than one of the superservice's field.

`param`'s attributes

name

  the name of the parameter.

type

  the parameter's data type

default

  the parameter's default value

    <!ELEMENT %LIRE.param; (%LIRE.description;)?                         >
    <!ATTLIST  %LIRE.param;
                 name       ID                                 #REQUIRED
                 type       (%lire.types;)                     #REQUIRED
                 default    CDATA                              #IMPLIED  >

### `chart-configs` element

This element contains one or more chart configurations that should be copied to the generated subreport. These chart configurations are specified using the Lire Report Configuration Markup Language.

This element has no attribute.

    <!ELEMENT %LIRE.chart-configs; (%LRCML.param;)+                      >

### Filter expression elements

    <!ENTITY % LIRE.eq      "%LIRE.pfx;eq"                               >
    <!ENTITY % LIRE.ne      "%LIRE.pfx;ne"                               >
    <!ENTITY % LIRE.gt      "%LIRE.pfx;gt"                               >
    <!ENTITY % LIRE.ge      "%LIRE.pfx;ge"                               >
    <!ENTITY % LIRE.lt      "%LIRE.pfx;lt"                               >
    <!ENTITY % LIRE.le      "%LIRE.pfx;le"                               >
    <!ENTITY % LIRE.and     "%LIRE.pfx;and"                              >
    <!ENTITY % LIRE.or      "%LIRE.pfx;or"                               >
    <!ENTITY % LIRE.not     "%LIRE.pfx;not"                              >
    <!ENTITY % LIRE.match   "%LIRE.pfx;match"                            >
    <!ENTITY % LIRE.value   "%LIRE.pfx;value"                            >

    <!ENTITY % expr "%LIRE.eq; | %LIRE.ne; |
                     %LIRE.gt; | %LIRE.lt; | %LIRE.ge; | %LIRE.le; |
                     %LIRE.and; | %LIRE.or; | %LIRE.not; |
                     %LIRE.match; | %LIRE.value;"                        >

#### `filter-spec` element

This element is used to select the subset of the records that will be used to generate the report. If this element is missing, all records will be used to generate the report.

The content of this element are expression element which defines an expression which will evaluate to true or false for each record. The subset used for to generate the report are all records for which the expression evaluates to true.

The value used to evaluate the expressions are either literal, value of parameter or value of one of the field of the record. Parameter and field starts with a $ followed by the name of the parameter or field. All other values are interpreted as literals.

This element doesn't have any attribute.

    <!ELEMENT %LIRE.filter-spec; (%expr;)                                >

#### `value` element

This expression element to false if the 'value' attribute is undefined, the empty string or 0. It evaluate to true otherwise.

`value`'s attributes

value

  The value that should be evaluated for a boolean context.

    <!ELEMENT %LIRE.value;  EMPTY                                        >
    <!ATTLIST %LIRE.value;
                 value      CDATA                              #REQUIRED >

#### `eq` element

    <!ELEMENT %LIRE.eq;     EMPTY                                        >
    <!ATTLIST %LIRE.eq;
                 arg1       CDATA                              #REQUIRED
                 arg2       CDATA                              #REQUIRED >

#### `ne` element

    <!ELEMENT %LIRE.ne;     EMPTY                                        >
    <!ATTLIST %LIRE.ne;
                 arg1       CDATA                              #REQUIRED
                 arg2       CDATA                              #REQUIRED >

#### `gt` element

    <!ELEMENT %LIRE.gt;     EMPTY                                        >
    <!ATTLIST %LIRE.gt;
                 arg1       CDATA                              #REQUIRED
                 arg2       CDATA                              #REQUIRED >

#### `ge` element

    <!ELEMENT %LIRE.ge;     EMPTY                                        >
    <!ATTLIST %LIRE.ge;
                 arg1       CDATA                              #REQUIRED
                 arg2       CDATA                              #REQUIRED >

#### `lt` element

    <!ELEMENT %LIRE.lt;     EMPTY                                        >
    <!ATTLIST %LIRE.lt;
                 arg1       CDATA                              #REQUIRED
                 arg2       CDATA                              #REQUIRED >

#### `le` element

    <!ELEMENT %LIRE.le;     EMPTY                                        >
    <!ATTLIST %LIRE.le;
                 arg1       CDATA                              #REQUIRED
                 arg2       CDATA                              #REQUIRED >

#### `match` element

The match expression element tries to match a POSIX 1003.2 extended regular expression to a value and return true if there is a match and false otherwise.

`match`'s attributes

value

  the value which should matched

re

  A POSIX 1003.2 extended regular expression.

case-sensitive

  Is the regex sensitive to case. Defaults to true.

    <!ELEMENT %LIRE.match;  EMPTY                                        >
    <!ATTLIST %LIRE.match;
                 value          CDATA                          #REQUIRED
                 re             CDATA                          #REQUIRED
                 case-sensitive (%bool.type;)                  'true'    >

#### `not` element

    <!ELEMENT %LIRE.not;    (%expr;)                                     >

#### `and` element

    <!ELEMENT %LIRE.and;    (%expr;)+                                    >

#### `or` element

    <!ELEMENT %LIRE.or;     (%expr;)+                                    >

### Report Calculation Elements

    <!ENTITY % LIRE.timegroup   "%LIRE.pfx;timegroup"                    >
    <!ENTITY % LIRE.group       "%LIRE.pfx;group"                        >
    <!ENTITY % LIRE.rangegroup  "%LIRE.pfx;rangegroup"                   >
    <!ENTITY % LIRE.timeslot    "%LIRE.pfx;timeslot"                     >
    <!ENTITY % LIRE.field       "%LIRE.pfx;field"                        >
    <!ENTITY % LIRE.sum         "%LIRE.pfx;sum"                          >
    <!ENTITY % LIRE.avg         "%LIRE.pfx;avg"                          >
    <!ENTITY % LIRE.min         "%LIRE.pfx;min"                          >
    <!ENTITY % LIRE.max         "%LIRE.pfx;max"                          >
    <!ENTITY % LIRE.first       "%LIRE.pfx;first"                        >
    <!ENTITY % LIRE.last        "%LIRE.pfx;last"                         >
    <!ENTITY % LIRE.count       "%LIRE.pfx;count"                        >
    <!ENTITY % LIRE.records     "%LIRE.pfx;records"                      >

    <!-- Empty group operator                                          -->
    <!ENTITY % LIRE.empty-ops   "%LIRE.sum; | %LIRE.avg; | %LIRE.count; |
                                 %LIRE.min; | %LIRE.max; | %LIRE.first; |
    			     %LIRE.last; | %LIRE.records;"           >

    <!-- Group operations that are also aggregators                    -->
    <!ENTITY % LIRE.nestable-aggr
                                "%LIRE.group; | %LIRE.timegroup; |
                                 %LIRE.timeslot; | %LIRE.rangegroup;"    >

    <!-- Group operations                                              -->
    <!ENTITY % LIRE.group-ops   "%LIRE.empty-ops;| %LIRE.nestable-aggr;" >

    <!-- Containers for group operations                               -->
    <!ENTITY % LIRE.aggregator  "%LIRE.nestable-aggr;"                   >

#### `report-calc-spec` element

This element describes the computation needs to generate the report.

It contains one aggregator element.

This element doesn't have any attributes.

    <!ELEMENT %LIRE.report-calc-spec; (%LIRE.aggregator;)                >

#### Common Attributes

All elements which will create a column in the resulting report have a label attribute that will be used as the column label. When this attribute is omitted, the name attribute content will be used as column label.

    <!ENTITY % label.attr "label CDATA #IMPLIED">

All operation elements may have a name attribute which can be used to reference that column. (It is required in the case of aggrage functions). The primary usage is for controlling the sort order of the rows in the generated report.

    <!ENTITY % name.attr	  "name ID      #IMPLIED">
    <!ENTITY % name.attr.req  "name ID      #REQUIRED">

#### `group` element

The group element generates a report where records are grouped by some field values and aggregate statistics are computed on those group of records.

It contains the field that should be used for grouping and the statistics that should be computed.

The sort order in the report is controlled by the 'sort' attribute.

`group`'s attributes

name

  An identifier that can be used to reference this operation from other elements. This name will most often be used in the parent's sort attribute. If omitted a default name will be generated.

sort

  whitespace delimited list of fields name that should used to sort the records. Field names can be prefixed by `-` to specify reverse sort order, otherwise ascending sort order is used. The name can also refer to the name attribute of the statistics element.

limit

  limit the number of records that will be in the generated report. It can be either a positive integer or the name of a user supplied param.

    <!ELEMENT %LIRE.group;      ((%LIRE.field;)+, (%LIRE.group-ops;)+)   >
    <!ATTLIST %LIRE.group;
    	     %name.attr;
                 sort       NMTOKENS                           #IMPLIED
                 limit      CDATA                              #IMPLIED  >

#### `timegroup` element

The timegroup`` element generates a report where records are grouped by time range (hour, day, etc.). Statistics are then computed on these records grouped by period.

`timegroup`'s attributes

name

  An identifier that can be used to reference this operation from other elements. This name will most often be used in the parent's sort attribute. If omitted a default name will be generated.

label

  Sets the column label that will be used for column generated by this element. If omitted a default label will be generated.

field

  the name of the field which is used to group records. This should be a field which is of one of the time types (timestamp, date, time). It defaults to the default timestamp field if unspecified.

period

  This is the timeperiod over which records should be grouped. Valid period looks like (hour, day, 1h, 30m, etc). It can also be the name of a user supplied param.

    <!ELEMENT %LIRE.timegroup;  (%LIRE.group-ops;)+                      >
    <!ATTLIST %LIRE.timegroup;
    	     %name.attr;
    	     %label.attr;
                 field      NMTOKEN                            #IMPLIED
                 period     CDATA                             #REQUIRED  >

#### `timeslot` element

The `timeslot` element generates a report where records are grouped according to a cyclic unit of time. The duration unit used won't fall over to the next higher unit. For example, this means that using a unit of 1d will generate a report where the stats will be by day of the week, 8h will generate a report by third of day, etc. The statistics are then computed over the records in the same timeslot.

Example 11.1. timeslot with 1d unit

Using a specification like:

    <lire:timeslot unit="1d">
      ...
    </lire:timeslot>

would generate a report like:

Table 11.1. weekly overview

Sunday | ...
Monday | ...
Tuesday | ...
... | ...
Saturday | ...

where data will be summed over all Sunday's, Monday's, ..., and Saturdays found in the log.

Example 11.2. timeslot with 2m unit

Specifying `unit="2m"` would generate a line for each two months, giving a yearly view.

`timeslot`'s attributes

name

  An identifier that can be used to reference this operation from other elements. This name will most often be used in the parent's sort attribute. If omitted a default name will be generated.

label

  Sets the column label that will be used for column generated by this element. If omitted a default label will be generated.

field

  the name of the field which is used to group records. This should be a field which is of one of the time types (timestamp, date, time). It defaults to the default 'timestamp' field if unspecified.

unit

  This is the cyclic unit of time in which units the records are aggregated. It can be any duration value. (hour, day, 1h, 30m, etc). It can also be the name of a user supplied param.

    <!ELEMENT %LIRE.timeslot;  (%LIRE.group-ops;)+                       >
    <!ATTLIST %LIRE.timeslot;
    	     %name.attr;
    	     %label.attr;
                 field      NMTOKEN                            #IMPLIED
                 unit       CDATA                             #REQUIRED  >

#### `rangroup` element

The `rangegroup` element generates a report where records are grouped into distinct class delimited by a range. This element can be used to aggregates continuous numeric values like duration or bytes. Statistics are then computed on these records grouped in range class.

`rangegroup`'s attributes

name

  An identifier that can be used to reference this operation from other elements. This name will most often be used in the parent's sort attribute. If omitted a default name will be generated.

label

  Sets the column label that will be used for column generated by this element. If omitted a default label will be generated.

field

  the name of the field which is used to group records. This should be a field which is of a continuous numeric type (bytes, duration, int, number). Time types aggregation should use the timegroup element or timeslot.

range-start

  The starting index of the first class. Defaults to 0. This won't be used a the lower limit of the class. It is only used to specify relatively at which values the classes delimitation start. For example, if the range-start is 1, and the range-size is 5, a class ranging -4 to 0 will be created if values are in that range. It can be supplied in any continuous unit (i.e 10k, 5m, etc.) This can also be the name of a user supplied param.

range-size

  This is the size of class. It can be supplied in any continuous unit (i.e 10k, 5m, etc.) It can also be the name of a user supplied param.

min-value

  All value lower then this boundary value will be considered to be equal to this value. If this parameter isn't set, the ranges won't be bounded on the left side.

max-value

  All value greater then this boundary value will be considered to be equal to this value. If this parameter isn't set, the ranges won't be bounded on the right side.

size-scale

  The rate at which the size scale from one class to another. If it is different then 1, this will create a logarithmic distribution. For example, setting this to 2, each successive class will be twice larger then the precedent : 0-9, 10-29, 30-69, etc.

    <!ELEMENT %LIRE.rangegroup;  (%LIRE.group-ops;)+                     >
    <!ATTLIST %LIRE.rangegroup;
    	     %name.attr;
    	     %label.attr;
                 field          NMTOKEN                       #REQUIRED
                 range-start    CDATA                         #IMPLIED
                 range-size     CDATA                         #REQUIRED
                 min-value      CDATA                         #IMPLIED
                 max-value      CDATA                         #IMPLIED
                 size-scale     CDATA                         #IMPLIED   >

#### `field` element

This element reference a DLF field which value will be displayed in a separate column in the resulting report. Its used to specify the grouping fields in the `group` element and to specify the fields to output in the `records` element.

`field`'s attribute

name

  The name of the DLF field that will be used as key for grouping.

label

  Sets the column label that will be used for column generated by this element. If omitted a default label will be generated.

    <!ELEMENT %LIRE.field;  EMPTY                                        >
    <!ATTLIST %LIRE.field;
                 name   NMTOKEN				    #REQUIRED
    	     %label.attr;                                            >

#### `sum` element

The `sum` element sums the value of a field in the group.

`sum`'s attributes

name

  An identifier that can be used to reference this operation from other elements. This name will most often be used in the parent's sort attribute.

label

  Sets the column label that will be used for column generated by this element. If omitted a default label will be generated.

field

  the field that should be summed.

ratio

  This attribute can be used to display the sum as a ratio of the group or table total. If the attribute is set to `group` the resulting value will be the ratio on the group's total sum. If the attribute is set to `table`, it will be expressed as a ratio of the total sum of the table. The defaults is `none` which will not convert the sum to a ratio.

weight

  This optional attribute can be used to create a weighted sum. It should contain a numerical DLF field name. The content of that field will be used to multiply each field value before summing them.

    <!ELEMENT %LIRE.sum;    EMPTY                                        >
    <!ATTLIST %LIRE.sum;
                 %name.attr.req;
    	     %label.attr;
    	     ratio	(none | group |table)              'none'
                 field      NMTOKEN                            #REQUIRED
    	     weight	NMTOKEN				   #IMPLIED >

#### `avg` element

The avg`` element calculate average of all value of a field in the group. The average will be computed either on the number of records if the by-field attribute is left empty, or by the number of different values that there are in the by-fields.

`avg`'s attributes

name

  An identifier that can be used to reference this operation from other elements. This name will most often be used in the parent's sort attribute.

label

  Sets the column label that will be used for column generated by this element. If omitted a default label will be generated.

field

  the field that should be averaged. If left unspecified the number of record will be counted.

by-fields

  the fields that will be used to dermine the count over which the average is computed.

weight

  This optional attribute can be used to create a weighted average. It should contain a numerical DLF field name. The content of that field will be used to multiply each field value before summing them. Its that weighted sum that will be used to calculate the average.

    <!ELEMENT %LIRE.avg;    EMPTY                                        >
    <!ATTLIST %LIRE.avg;
                 %name.attr.req;
    	     %label.attr;
                 field      NMTOKEN                            #IMPLIED
                 by-fields  NMTOKENS                           #IMPLIED
    	     weight	NMTOKEN				   #IMPLIED >

#### `max` element

The max`` element calculates the maximum value for a field in all the group's records.

`max`'s attributes

name

  An identifier that can be used to reference this operation from other elements. This name will most often be used in the parent's sort attribute.

label

  Sets the column label that will be used for column generated by this element. If omitted a default label will be generated.

field

  the field for which the maximum value should found.

    <!ELEMENT %LIRE.max;    EMPTY                                        >
    <!ATTLIST %LIRE.max;
                 %name.attr.req;
    	     %label.attr;
                 field      NMTOKEN                            #REQUIRED >

#### `min` element

The `min` element calculates the minimum value for a field in all the group's records.

`min`'s attributes

name

  An identifier that can be used to reference this operation from other elements. This name will most often be used in the parent's sort attribute.

label

  Sets the column label that will be used for column generated by this element. If omitted a default label will be generated.

field

  the field for which the minimum value should found.

    <!ELEMENT %LIRE.min;    EMPTY                                        >
    <!ATTLIST %LIRE.min;
                 %name.attr.req;
    	     %label.attr;
                 field      NMTOKEN                            #REQUIRED >

#### `first` element

The `first` element will display the value of the value of one field of the first DLF record within its group. The sort order is controlled through the sort attribute..

`first`'s attributes

name

  An identifier that can be used to reference this operation from other elements. This name will most often be used in the parent's sort attribute.

label

  Sets the column label that will be used for column generated by this element. If omitted a default label will be generated.

field

  the DLF field which will be displayed.

sort

  whitespace delimited list of fields name that should used to sort the records. Field names can be prefixed by `-` to specify reverse sort order, otherwise ascending sort order is used. If this attribute is omitted, the records will be sort in ascending order of the default timestamp field.

    <!ELEMENT %LIRE.first;    EMPTY                                        >
    <!ATTLIST %LIRE.first;
                 %name.attr.req;
    	     %label.attr;
                 field      NMTOKEN                            #REQUIRED
                 sort       NMTOKENS                           #IMPLIED
    	     >

#### `last` element

The `last` element will display the value of the value of one field of the last DLF record within its group. The sort order is controlled through the sort attribute..

`last`'s attributes

name

  An identifier that can be used to reference this operation from other elements. This name will most often be used in the parent's sort attribute.

label

  Sets the column label that will be used for column generated by this element. If omitted a default label will be generated.

field

  the DLF field which will be displayed.

sort

  whitespace delimited list of fields name that should used to sort the records. Field names can be prefixed by `-` to specify reverse sort order, otherwise ascending sort order is used. If this attribute is omitted, the records will be sort in ascending order of the default timestamp field.

    <!ELEMENT %LIRE.last;    EMPTY                                        >
    <!ATTLIST %LIRE.last;
                 %name.attr.req;
    	     %label.attr;
                 field      NMTOKEN                            #REQUIRED
                 sort       NMTOKENS                           #IMPLIED
    	     >

#### `count` element

The `count` element counts the number of records in the group if the fields attribute is left empty. Otherwise, it will count the number of different values in the fields specified.

`count`'s attributes

name

  An identifier that can be used to reference this operation from other elements. This name will most often be used in the parent's sort attribute.

label

  Sets the column label that will be used for column generated by this element. If omitted a default label will be generated.

fields

  Which fields to count. If unspecified all records in the group are counted. If not, only different fields' value will be counted.

ratio

  This attribute can be used to display the frequency as a ratio of the group or table total. If the attribute is set to `group` the resulting value will be the ratio on the group's total frequency. If the attribute is set to `table`, it will be expressed as a ratio of the total frequency of the table. The defaults is `none` which will not convert the frequency to a ratio.

    <!ELEMENT %LIRE.count;  EMPTY                                        >
    <!ATTLIST %LIRE.count;
                 %name.attr.req;
                 %label.attr;
    	     ratio	(none | group |table)              'none'
                 fields     NMTOKENS                           #IMPLIED  >

#### `records` element

The `records` element will put the content of selected fields in the report. This can be used in reports that shows events matching certain criteria. The fields that will be included in the report for each record is specified by the `field` element.

`records`'s attribute

fields

  whitespace delimited list of fields name that should included in the report.

    <!ELEMENT %LIRE.records; EMPTY                                       >
    <!ATTLIST %LIRE.records;
                 fields      NMTOKENS                          #REQUIRED >

Prev | Up | Next
Chapter 10. The Lire DLF Schema Markup Language | Home | Chapter 12. The Lire Report Markup Language