报表定义语言 (RDL) 是 SQL Server Reporting Services 报表定义的 XML 表示形式。 报表定义包含报表的数据检索和布局信息。 RDL 由 XML 元素组成,这些元素符合为 Reporting Services创建的 XML 语法。 您可以添加自己的自定义功能,用于通过访问报表定义文件中的代码程序集来控制报表项值、样式和格式设置。
RDL 通过定义支持报表定义互换的公共架构,提升了商业报表产品的互操作性。 使用 XML 的任何协议或编程接口都可以使用 RDL。 RDL 是:
报表定义的 XML 架构。
企业和第三方的交换格式。
支持其他命名空间和自定义元素的可扩展开放架构。
RDL 规范
若要下载特定架构版本的规范,请参阅 报表定义语言规范。
RDL XML 架构定义
SQL Server Reporting Services 报表定义语言 (RDL) 文件使用 XML 架构定义 (XSD) 文件进行验证。 架构定义 RDL 元素可在 .rdl 文件中什么位置出现的规则。 元素包括其数据类型和基数,即允许出现的次数。 元素可以是简单的,也可以是复杂的。 简单元素没有子元素或属性。 复杂元素确实具有子元素以及可选的属性。
例如,架构包括 RDL 元素 ReportParameters,即复杂类型 ReportParametersType。 按照约定,元素的复杂类型是元素的名称,后跟单词 Type。
ReportParameters元素可以包含Report元素(复杂类型),并且可以包含ReportParameter元素。 A ReportParameterType 是一种简单类型,只能是以下值之一:Boolean、、DateTime、Integer或FloatString。 有关 XML 架构数据类型的详细信息,请参阅 XML Schema Part 2: Datatypes Second Edition(XML 架构第 2 部分:数据类型第二版)。
可在 ReportDefinition.xsd 文件中找到 RDL XSD,该文件位于产品 CD-ROM 的 Extras 文件夹中。 它还可通过以下 URL 在报表服务器上使用: https://servername/reportserver/reportdefinition.xsd.
创建 RDL
由于 RDL 的开放性和可扩展性,因此可以生成基于其 XML 架构生成 RDL 的各种工具和应用程序。
Reporting Services 提供用于生成 RDL 文件的多种工具。 有关详细信息,请参阅 Reporting Services 工具。
从应用程序生成 RDL 的最简单方法之一是使用 Microsoft .NET Framework 的 System.Xml 命名空间和 System.Linq 命名空间的类。 一个类,特别是 XmlTextWriter 类,可用于编写 RDL。 使用 XmlTextWriter,可以在任何 .NET Framework 应用程序中从头到尾生成完整的报表定义。 开发人员还可以通过添加具有自定义属性的自定义报表项来扩展 RDL。 有关 XmlTextWriter 类和 System.Xml 命名空间的详细信息,请参阅 Microsoft .NET Framework 开发人员指南。 有关 Language-Integrated 查询(LINQ)的详细信息,请在 MSDN 上搜索“LINQ to XML”。
报表定义文件的标准文件扩展名为 .rdl。 还可以开发扩展名为 .rdlc 的客户端报表定义文件。 两种扩展名的 MIME 类型都为 text/xml。 有关报表的详细信息,请参阅 Reporting Services 报表(SSRS)。
RDL 类型
下表列出了在 RDL 元素和属性中使用的类型。
| 类型 | DESCRIPTION |
|---|---|
Binary |
具有 Base-64 编码二进制值的属性。 |
Boolean |
一个具有 true 或 false 作为对象值的属性。 除非另有指定,否则省略的可选布尔对象的 False值为 。 |
Date |
具有以 ISO8601 日期格式 YYYY-MM-DD[THH:MM[:SS[.S]]] 指定的完全指定日期或日期时间值的属性。 |
Enum |
具有字符串文本值的属性,该文本值必须是指定值列表中的某个值。 |
Float |
具有浮点值的属性。 使用句号 (.) 作为可选的小数分隔符。 |
Integer |
具有整数 (int32) 值的属性。 |
Language |
具有包含语言和区域性代码(例如 "en-us" 表示“美国英语”)的文本值的属性。 该值必须是特定语言,或者是在 Microsoft .NET Framework 中为其定义了默认语言的非特定语言。 |
Name |
具有字符串文本值的属性。 名称在该项的命名空间中必须唯一。 如果未指定,则项的命名空间为具有名称的最内层包含对象。 |
NormalizedString |
具有已规范化的字符串文本值的属性。 |
Size |
size 元素必须包含数字(带有用作可选小数分隔符的句点字符)。 数字必须后接一个表示 CSS 长度单位的指示符,例如 cm、mm、in、pt 或 pc。 数字和指示符之间的空格是可选的。 有关大小指定符的详细信息,请参阅 CSS 长度单位参考。 在 RDL 中,最大值 Size 为 160 in。 最小大小为 0 in。 |
String |
具有字符串文本值的属性。 |
UnsignedInt |
具有无符号整数 (uint32) 值的属性。 |
Variant |
具有任何简单 XML 类型的属性。 |
RDL 数据类型
DataType 枚举定义 RDL 中属性、表达式或参数的数据类型。 下表显示公共语言运行时 (CLR) 数据类型是如何与 RDL 数据类型相对应的。
| CLR 类型 | 相应的数据类型 |
|---|---|
| 布尔型 | 布尔型 |
| DateTime、DateTimeOffset | 日期时间 |
| Int16、Int32、UInt16、Byte、SByte | 整数 |
| Single、Double | 漂浮 |
| String、Char、GUID、Timespan | 字符串 |