Sintaxe de consulta XML para especificar dados de relatório XML (SSRS)
No Reporting Services, é possível criar conjuntos de dados para fontes de dados XML. Depois de definir uma fonte de dados, crie uma consulta para o conjunto de dados. Dependendo do tipo de dados XML apontado pela fonte de dados, a consulta do conjunto de dados é criada incluindo uma Query XML ou um caminho de elemento. Uma Query XML é iniciada com uma marca de <Query> e inclui namespaces e elementos XML que variam de acordo com a fonte de dados. Um caminho de elemento não depende do namespace e especifica quais nós e atributos de nós devem ser usados nos dados XML subjacentes com uma sintaxe do tipo XPath. Para obter mais informações sobre caminhos de elemento, consulte Sintaxe do caminho do elemento para especificar dados de relatório XML (SSRS).
É possível criar uma fonte de dados XML para os seguintes tipos de dados XML:
Documentos Xml apontados por uma URL que usa protocolo http
Pontos de extremidade do serviço Web que retornam dados XML
Dados XML inseridos
Como especificar uma Query XML ou um caminho de elemento no tipo de dados XML.
Para um documento XML, a Query XML é opcional. Se ela for incluída, poderá conter um ElementPath XML opcional. O valor do ElementPath XML usa a sintaxe de caminho de elemento. A Query XML e o ElementPath XML são incluídos para processar namespaces corretamente quando exigidos pelos dados XML da fonte de dados.
Para um ponto de extremidade de serviço Web apontado por uma URL de cadeia de conexão, a Query XML define o método de serviço Web, a ação SOAP ou ambos. O provedor de dados XML cria uma solicitação de serviço Web que recupera dados XML a serem usados no relatório.
Observação |
---|
Quando um namespace de serviço Web inclui um caractere de barra (/), inclua o método de serviço Web e a ação SOAP de modo que a extensão de processamento de dados XML possa derivar o namespace corretamente. |
Para um documento XML inserido, a Query XML define os dados XML inseridos a serem usados, inclui espaços para nome opcionais e contém um ElementPath XML opcional.
Especificando parâmetros de consulta para dados XML
É possível especificar parâmetros de consulta para documentos XML.
Para solicitações de URL, os parâmetros de consulta são incluídos como parâmetros de URL padrão.
Para solicitações de serviço Web, os parâmetros de consulta são passados para o método de serviço Web. Para definir um parâmetro de consulta, use a página Parâmetros da caixa de diálogo Propriedades do Conjunto de Dados. Para obter mais informações, consulte Caixa de diálogo Propriedades do Conjunto de Dados, Parâmetros.
Exemplo
Os exemplos na seguinte tabela ilustram como recuperar dados do serviço Web Servidor de Relatórios, de um documento XML e de dados XML inseridos.
Fonte de dados XML |
Exemplo de consulta |
---|---|
Dados XML de serviço Web do método ListChildren. |
<Query> <Method Name="ListChildren" Namespace="https://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices" /> </Query> |
Dados XML de serviço Web do SoapAction. |
<Query xmlns=namespace> <SoapAction>http://schemas/microsoft.com/sqlserver/2005/03/23/reporting/reportingservices/ListChildren</SoapAction> </Query> |
Documento XML ou dados XML inseridos que usam namespaces. Elemento de consulta que especifica namespaces para um caminho de elemento. |
<Query xmlns:es="https://schemas.microsoft.com/StandardSchemas/ExtendedSales"> <ElementPath>/Customers/Customer/Orders/Order/es:LineItems/es:LineItem</ElementPath> </Query> |
Documento XML inserido. |
<Query> <XmlData> <Customers> <Customer ID="1">Bobby</Customer> </Customers> </XmlData> <ElementPath>Customer {@}</ElementPath> </Query> |
Documento XML que usa padrão. |
No query. O caminho de elemento deriva do próprio documento XML e independe do namespace. |
Observação |
---|
O primeiro exemplo de serviço Web lista o conteúdo do servidor de relatório que usa o método ListChildren. Para executar essa consulta, crie uma nova fonte de dados e defina a cadeia de conexão como https://localhost/reportserver/reportservice2006.asmx. O método ListChildren utiliza dois parâmetros: Item e Recursive. Defina o valor padrão do Item como / e Recursive como 1. |
Especificando namespaces
Use o elemento Query XML para especificar os namespaces usados nos dados XML da fonte de dados. A seguinte consulta XML usa o namespace sales. Os nós XML ElementPath para sales:LineItems e sales:LineItem usam o namespace sales.
<Query xmlns:sales=
"https://schemas.microsoft.com/StandardSchemas/ExtendedSales">
<SoapAction>
https://schemas.microsoft.com/SalesWebService/ListOrders
</SoapAction>
<ElementPath>
Customers/Customer/Orders/Order/sales:LineItems/sales:LineItem
</ElementPath>
</Query>
Para especificar o namespace do provedor de dados para que o namespace padrão permaneça vazio, use xmldp. Isso é mostrado no exemplo a seguir.
Exemplo
Os seguintes exemplos usam o documento XML DPNamespace.xml, fornecido para ilustração após a tabela. Essa tabela mostra dois exemplos de sintaxe de ElementPath XML que inclui prefixos de namespace.
Elemento de consulta XML |
Campos resultantes no conjunto de dados |
---|---|
<Consulta/> |
Nóns
Valor Ahttps://schemas.microsoft.com/...
Valor Bhttps://schemas.microsoft.com/...
Valor Chttps://schemas.microsoft.com/...
|
<xmldp:Query xmlns:xmldp="https://schemas.microsoft.com/sqlserver/2005/02/reporting/XmlDPQuery" xmlns:ns="https://schemas.microsoft.com/..."> <xmldp:ElementPath>Root {}/ns:Element2/Node</xmldp:ElementPath> </xmldp:Query> |
Nó
Valor D
Valor E
Valor F
|
Documento XML: DPNamespace.xml
É possível copiar esse XML e salvá-lo em uma URL disponível do Designer de Relatórios a ser usado como uma fonte de dados XML: por exemplo, https://localhost/DPNamespace.xml.
<Root xmlns:ns="https://schemas.microsoft.com/...">
<ns:Element1>
<Node>Value A</Node>
<Node>Value B</Node>
<Node>Value C</Node>
</ns:Element1>
<ns:Element2>
<Node>Value D</Node>
<Node>Value E</Node>
<Node>Value F</Node>
</ns:Element2>
</Root>