Linguagem de Definição de Relatórios (SSRS)

A linguagem RDL é uma representação XML de uma definição de relatório SSRS (SQL Server Reporting Services). Uma definição de relatório contém informações de layout e recuperação de dados de um relatório. A linguagem RDL é composta por elementos XML que correspondem a uma gramática XML criada para o Reporting Services. É possível personalizar funções para controlar os valores do item de relatório, os estilos e a formatação acessando os assemblies de código nos arquivos de definição de relatório.

A linguagem RDL promove a interoperabilidade de produtos de relatórios comerciais definindo um esquema comum que habilita o intercâmbio de definições de relatório. RDL é:

  • Um esquema XML para definições de relatório.
  • Um formato de intercâmbio para empresas e terceiros.
  • Um esquema extensível e aberto que oferece suporte a mais namespaces e elementos personalizados.

Pré-requisitos

Qualquer protocolo ou interface programática que funcione com o XML pode ser usada com a linguagem RDL.

Especificações de RDL

Para baixar as especificações de versões específicas do esquema, consulte Report Definition Language Specification.

Definição de esquema XML RDL

Um arquivo de linguagem RDL do SSRS é validado com o uso de um arquivo XSD (definição de esquema XML). O esquema define as regras para onde os elementos RDL podem ocorrer em um arquivo .rdl. Um elemento inclui seu tipo de dados e a cardinalidade, ou seja, o número de ocorrências que são permitidas. Um elemento pode ser simples ou complexo. Um elemento simples não tem elementos filhos ou atributos. Um elemento complexo tem elementos filhos e pode ter atributos.

Por exemplo, o esquema inclui o elemento RDL ReportParameters, que é o tipo complexo ReportParametersType.

  • Por convenção, um tipo complexo para um elemento é o nome do elemento seguido da palavra Type.
  • Um elemento ReportParameters pode estar contido no elemento Report (um tipo complexo) e pode conter elementos ReportParameter .
  • Um ReportParameterType é um tipo simples que pode ser somente um dos seguintes valores: Boolean, DateTime, Integer, Floatou String.

Para obter mais informações sobre os tipos de dados de Esquema XML, consulte XML Schema Part 2: Datatypes Second Edition(em inglês).

O RDL XSD está disponível no arquivo ReportDefinition.xsd, localizado na pasta Extras no CD-ROM do produto. Ele também está disponível no servidor de relatório por meio da seguinte URL: https://servername/reportserver/reportdefinition.xsd.

Criar RDL

Crie ferramentas e aplicativos que gerem RDL com base em seu esquema XML devido à natureza aberta e extensível da RDL.

Reporting Services fornece várias ferramentas para compilar arquivos RDL. Para obter mais informações, consulte Ferramentas do Reporting Services.

  • Gere RDL de um aplicativo usando as classes do Microsoft .NET Framework dos namespaces System.Xml e System.Linq.
  • Use oXmlTextWriter para escrever RDL. Com o XmlTextWriter, você pode gerar uma definição de relatório completa do começo ao fim em qualquer aplicativo do .NET Framework . Para obter mais informações sobre a classe XmlTextWriter e o namespace System.Xml, consulte o Guia do Desenvolvedor do Microsoft .NET Framework.

Os desenvolvedores podem estender a linguagem RDL adicionando itens de relatório personalizados com propriedades personalizadas. Para obter mais informações sobre a LINQ (consulta integrada à linguagem), pesquise "LINQ para XML" no Microsoft Developer Network.

A extensão de arquivo padrão para arquivos de definição de relatório é .rdl. Você pode desenvolver arquivos de definição de relatório de cliente, os quais têm as extensões .rdlc. O tipo de MIME para ambas as extensões é texto/xml. Para obter mais informações, consulte Relatórios do Reporting Services (SSRS).

Tipos de RDL

A tabela a seguir lista os tipos usados em elementos e atributos RDL.

Tipo Descrição
Binário Uma propriedade com um valor binário codificado na base 64.
Booleano Uma propriedade que define o valor do objeto como true ou false . A menos que seja especificado o contrário, o valor de um objeto Booliano opcional omitido é False.
Data Uma propriedade com data ou valor de data/hora completamente especificados no formato de data ISO8601: YYYY-MM-DD[THH:MM[:SS[.S]]].
Enum Uma propriedade com um valor de texto de cadeia de caracteres que deve estar na lista de valores designados.
Flutuar Uma propriedade com um valor flutuante. O ponto (.) é usado como separador decimal opcional.
Inteiro Uma propriedade com um valor inteiro (int32).
Idioma Uma propriedade cujo valor de texto contém um código de idioma e cultura, como "en-us" para inglês dos EUA. O valor deve ser um idioma específico ou um idioma neutro para o qual um idioma padrão é definido no Microsoft .NET Framework.
Nome Uma propriedade com um valor de texto de cadeia de caracteres. Os nomes devem ser exclusivos dentro do namespace do item. Caso não seja especificado, o namespace de um item é o objeto interno que contém o nome.
NormalizedString Uma propriedade com um valor de texto de cadeia de caracteres normalizado.
Tamanho Um elemento de tamanho deve conter um número com um caractere de período usado como um separador decimal opcional. Um designador para uma unidade de comprimento de CSS como cm, mm, in, pc ou pt deve seguir o número. Um espaço entre o número e o designador é opcional. Para obter mais informações, consulte Valores de CSS e referência de unidades.

No RDL, o valor máximo de Size é de 160 polegadas. O tamanho mínimo é de 0 polegada.
Cadeia de caracteres Uma propriedade com um valor de texto de cadeia de caracteres.
UnsignedInt Uma propriedade com um valor inteiro não atribuído (uint32).
Variante Uma propriedade com qualquer tipo de XML simples.

Tipos de dados RDL

A enumeração DataType define o tipo de dados de um atributo, expressão ou parâmetro no RDL. A tabela a seguir mostra como os tipos de dados CLR (Common Language Runtime) correspondem aos tipos de dados RDL.

Tipo(s) de CLR Tipo de dados correspondente
booleano booleano
DateTime, DateTimeOffset Data e hora
Int16, Int32, UInt16, Byte, SByte Integer
Single e Double ponto flutuante
Cadeia de caracteres, Char, GUID, Timespan String