Création de datasets de rapport à partir de données XML (Générateur de rapports version 2.0)

Le Générateur de rapports version 2.0 fournit une extension pour le traitement des données prenant en charge la récupération de données de rapport à partir d'une source de données XML. Les rapports peuvent utiliser des données issues de documents XML et de services Web ou bien incorporer des données XML dans la requête. Il n'existe pas de prise en charge intégrée pour l'extraction de documents XML à partir d'une base de données SQL Server.

Connexion à une source de données XML et récupération de ses données

Pour récupérer les données XML d'un rapport, créez une source de données avec une chaîne de connexion qui spécifie une URL d'accès à un service Web ou un document XML. Vous pouvez également créer une source de données avec une chaîne de connexion vide et incorporer des données XML dans la requête du dataset.

Chaque source de données XML doit présenter les caractéristiques suivantes :

  • Le type de source de données doit être XML. Le Générateur de rapports version 2.0 fournit une extension pour le traitement des données XML pour récupérer et traiter les données dans un rapport.

  • Les informations d'identification doivent être configurées pour une sécurité intégrée Windows ou pour l'absence d'informations d'identification.

    Les informations d'identification stockées ou demandées ne sont pas prises en charge. Notez bien que si vous désactivez la sécurité intégrée Windows, vous ne pouvez pas l'utiliser pour récupérer des données. Si vous spécifiez des informations d'identification stockées ou demandées par invite, une erreur se produit au moment de l'exécution.

    Si vous choisissez de ne pas demander d'informations d'identification, l'accès anonyme est utilisé. Vérifiez que vous avez défini le compte d'exécution sans assistance pour le serveur de rapports afin d'établir une connexion à une source de données externe. L'extension pour le traitement des données XML ne transmet pas d'informations d'identification à l'URL cible ou au service Web ; la connexion ne peut aboutir que si vous avez défini le compte d'exécution sans assistance. Pour plus d'informations, consultez « Configuration d'un compte pour le traitement des rapports sans assistance » dans la documentation de Reporting Services dans la documentation en ligne de SQL Server.

  • La chaîne de connexion doit être une URL qui pointe vers le service Web, l'application Web ou le document XML disponible via HTTP. Les documents XML doivent disposer de l'extension XML. Vous pouvez également utiliser une chaîne de connexion vide pour les données XML incorporées dans la requête du dataset.

  • La requête doit retourner des données XML. Pour les documents XML, vous pouvez préciser un chemin d'accès à l'élément avec une syntaxe XML semblable à la syntaxe XQuery, comme décrit dans Syntaxe du chemin d'accès à l'élément pour la spécification de données de rapport XML (Générateur de rapports version 2.0). Pour un service Web, vous pouvez fournir un élément <Query> qui spécifie une méthode à appeler ou une action SOAP. Vous pouvez laisser la requête vide et adopter la requête par défaut si la source de données XML dispose d'une structure hiérarchique produisant les données que vous souhaitez utiliser dans votre rapport. Les valeurs de nœud d'élément XML et les attributs extraits lors de l'exécution de la requête correspondent aux champs de dataset que vous utilisez dans votre rapport.

  • Vous devez utiliser le concepteur de requêtes textuel pour créer la requête. La requête n'est pas analysée pour l'identification des paramètres ; par conséquent, vous devez créer les paramètres via la page Paramètre de la boîte de dialogue Propriétés du dataset. Pour plus d'informations sur la syntaxe de la requête, consultez Syntaxe de requête XML pour la spécification de données de rapport XML (Générateur de rapports version 2.0). Pour plus d'informations sur le concepteur de requêtes textuel, consultez Interface utilisateur du Concepteur de requêtes textuel (Générateur de rapports version 2.0).

Chaînes de connexion pour des sources de données XML

Les exemples suivants illustrent la syntaxe d'une chaîne de connexion pour un service Web ou pour un document XML. Le protocole file:// n'est pas pris en charge.

Type de document XML

Exemple de chaîne de connexion

Service Web

http://adventure-works.com/results.aspx

Document XML

https://localhost/XML/Customers.xml

Document XML incorporé

Vide

Pour plus informations sur la définition d'une source de données, consultez Procédure : créer une référence de source de données (Générateur de rapports version 2.0).

Requêtes pour datasets avec sources de données XML

Un dataset inclut une requête, c'est-à-dire le texte de commande exécuté par rapport à une source de données en vue de produire un ensemble de résultats spécifique. L'ensemble de résultats correspond à la collection de champs dans un dataset. Vous pouvez également définir des valeurs de filtre dans le dataset afin de limiter les résultats retournés à partir de la source de données. Les valeurs possibles d'une requête de dataset pour une source de données de type XML sont présentées dans le tableau ci-dessous.

Requête de dataset

Description

Vide

Utilisez une requête vide pour créer un ensemble de résultats par défaut. La requête par défaut est créée en lisant la source de données et en parcourant la hiérarchie de nœuds XML jusqu'à la première collection inférieure. L'ensemble de résultats inclut tous les nœuds avec des valeurs de texte et tous les attributs de nœud rencontrés sur ce parcours. Les colonnes dans l'ensemble de résultats sont mappées avec les champs du dataset.

Chemin d'accès à l'élément

Spécifie la séquence des nœuds à utiliser lors de l'extraction des données XML de la source de données.

Élément de requête XML

Spécification de requête XML avec les éléments facultatifs suivants.

Source de données XMLÉléments XML requisÉléments XML facultatifs
Pour un service Web <Method Namespace= "espace de noms" Name="MethodName" /> -- or -- <SoapAction> action soap </SoapAction> <ElementPath> chemin d'accès à l'élément </ElementPath> <Method Namespace= "espace de noms" Name="MethodName" /> -- or -- <SoapAction> action soap </SoapAction>
Pour un document XML <ElementPath> chemin d'accès à l'élément </ElementPath>
Pour un document XML incorporé <XmlData> XML interne </XmlData> <ElementPath> chemin d'accès à l'élément </ElementPath> -- or -- <ElementPath IgnoreNamespaces="true"> chemin d'accès à l'élément </ElementPath>

Utilisez l'élément de requête XML pour spécifier les espaces de noms ou l'attribut IgnoreNamespaces dans l'élément XML ElementPath pour les ignorer. Pour plus d'informations sur l'élément de requête XML, consultez Syntaxe de requête XML pour la spécification de données de rapport XML (Générateur de rapports version 2.0). Pour plus d'informations sur la syntaxe du chemin d'accès à l'élément, consultez Syntaxe du chemin d'accès à l'élément pour la spécification de données de rapport XML (Générateur de rapports version 2.0).

Configuration requise pour la récupération de données d'un service Web XML

L'extension de traitement de données XML ne détecte pas le schéma automatiquement. Vous devez donc disposer d'un moyen d'identifier quelles méthodes SOAP permettent d'extraire les données de votre choix. Vous devez également comprendre le schéma d'adressage ou l'espace de noms que le service Web utilise pour ses données.

Conditions requises pour l'extraction de données de documents XML

À l'aide du protocole HTTP, le serveur doit retourner les données XML ou ces dernières doivent être incorporées dans l'élément Query XML. Si vous faites directement référence à un document XML à l'aide du protocole HTTP, l'extension employée doit être l'extension .xml. Vous devez savoir comment créer une requête XML qui récupère toutes les données dont vous avez besoin. Si vous ne spécifiez pas un chemin d'accès à l'élément, le comportement par défaut pour l'analyse d'un document XML consiste à sélectionner le premier chemin d'accès disponible vers une collection de nœuds terminaux dans le document. Si le document XML inclut des chemins d'accès supplémentaires à d'autres collections sœurs de nœuds terminaux (inférieurs), ces nœuds seront ignorés sauf si vous spécifiez un chemin dans votre requête. Pour plus d'informations, consultez Syntaxe du chemin d'accès à l'élément pour la spécification de données de rapport XML (Générateur de rapports version 2.0).