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