The Report Definition Language (RDL) is an XML structure defined by Microsoft for storing Reporting Services reports. RDL is an element-centric XML structure. That is to say, RDL primarily uses elements to store information, rather than attributes.
The two types of elements within RDL are parent elements and property elements. Parent elements contain other elements, whereas property elements define a property of the parent element. The name of the property is the same as the name of the element. The value of the property is the contents of the element. For example, if the LeftMargin property of the report is set to 1 inch, the element containing that property would look like this:
Property elements do not contain other elements.
In order to keep the RDL files from becoming unwieldy, properties that are set to a default value will not be included in the RDL file. For example, the default value for the PageHeight property of a report is 11 inches. If the PageHeight of a report is set to 11 inches, the RDL file for that report will not contain a PageHeight element. The programs that read (or consume) the RDL file need to know these default values and fill them in automatically.
In the following illustrations, the single arrows indicate a one-to-zero-or-one relation between the parent element and the child element. For example, the Report element may contain zero or one PageHeader elements. The arrows with shading indicate a one-to-zero-or-many relation between the parent element and the child elements. For example, the DataSources element may contain zero or many DataSource elements.
The entire report definition is contained within the Report element. The structure of the parent elements within the Report element is shown here:
The report layout is made up of report items. As you saw in the previous illustration, report items can be placed in the PageHeader, the Body, and the PageFooter elements. The structure of the parent elements within the ReportItems element is shown here:
The structure of each of the data regions is shown in the following sections.
The structure of the parent elements within the Table element is shown here:
The structure of the parent elements within the Matrix element is shown here:
The structure of the parent elements within the List element is shown here:
The structure of the parent elements—Chart, Axis, and ChartSeries—within the Chart element is shown here and on the following page:
Last, but not least, the structure of the Grouping, Sorting, and Style elements is shown here:
These items are used within a number of the other elements.