Syntaxe du chemin d'accès à l'élément pour la spécification de données de rapport XML
Dans le Concepteur de rapports, vous spécifiez les données à utiliser pour un rapport à partir d'une source de données XML en définissant un chemin d'accès à l'élément qui respecte la casse. Le chemin d'accès à l'élément indique comment parcourir les nœuds hiérarchiques XML et leurs attributs dans la source de données XML. Pour utiliser le chemin d'accès à l'élément par défaut, laissez la requête du dataset ou ElementPath XML dans Query XML vide. Lorsque les données sont extraites de la source de données XML, les nœuds d'élément possédant des valeurs de texte et des attributs de nœud d'élément deviennent des colonnes dans le jeu de résultats. Les valeurs des nœuds et les attributs deviennent les données de ligne lorsque vous exécutez la requête. Les colonnes apparaissent sous la forme de collection de champs de dataset dans le volet de données du rapport. Cette rubrique décrit la syntaxe du chemin d'accès à l'élément.
[!REMARQUE]
La syntaxe du chemin d'accès à l'élément est indépendante de l'espace de noms. Pour utiliser des espaces de noms dans un chemin d'accès à l'élément, utilisez la syntaxe de requête XML qui inclut un ElementPath XML décrit dans Syntaxe de requête XML employée pour la spécification des données de rapport XML.
Le tableau suivant décrit les conventions utilisées pour définir un chemin d'accès à l'élément.
Convention |
Utilisation |
---|---|
gras |
Texte devant être tapé exactement comme indiqué. |
| (barre verticale) |
Sépare les éléments de la syntaxe. Vous ne pouvez choisir qu'un seul de ces éléments. |
[ ] (crochets) |
Éléments de syntaxe facultatifs. Ne tapez pas les crochets. |
{ } (accolades) |
Délimitent les paramètres des éléments de syntaxe. |
[,...n] |
Indique que l'élément précédent peut se répéter n fois. Les occurrences sont séparées par des virgules. |
Syntaxe
Element path ::=
ElementNode[/Element path]
ElementNode ::=
XMLName[(Encoding)][{[FieldList]}]
XMLName ::=
[NamespacePrefix:]XMLLocalName
Encoding ::=
HTMLEncoded | Base64Encoded
FieldList ::=
Field[,FieldList]
Field ::=
Attribute | Value | Element | ElementNode
Attribute ::=
@XMLName[(Type)]
Value ::=
@[(Type)]
Element ::=
XMLName[(Type)]
Type ::=
String | Integer | Boolean | Float | Decimal | Date | XML
NamespacePrefix ::=
Identifier that specifies the namespace.
XMLLocalName :: =
Identifier in the XML tag.
Notes
Le tableau suivant récapitule les termes du chemin d'accès à l'élément. Les exemples du tableau font référence au document XML d'exemple Customers.xml inclus dans la section Exemples de cette rubrique.
[!REMARQUE]
Les balises XML respectent la casse. Lorsque vous spécifiez ElementNode dans le chemin d'accès à l'élément, vous devez utiliser exactement les mêmes balises XML que celles de la source de données.
Terme |
Définition |
---|---|
Chemin d'accès à l'élément |
Définit la séquence de nœuds à parcourir dans le document XML afin de récupérer les données de champ d'un dataset avec une source de données XML. |
ElementNode |
Nœud XML dans le document XML. Les nœuds sont désignés par des balises et existent dans une relation hiérarchique avec d'autres nœuds. Par exemple, <Customers> est le nœud de l'élément racine. <Customer> est un sous-élément de <Customers>. |
XMLName |
Nom du nœud. Par exemple, le nom du nœud Customers est Customers. Un XMLName peut porter comme préfixe un identificateur d'espace de noms qui identifie de façon unique chaque nœud. |
Encoding |
Indique que Value pour cet élément est codé en XML et doit être décodé et inclus en tant que sous-élément de cet élément. |
FieldList |
Définit l'ensemble des éléments et des attributs à utiliser pour récupérer des données. Si ce terme n'est pas spécifié, tous les attributs et les sous-éléments sont utilisés comme champs. Si la liste de champs vide est spécifiée ({}), aucun champ de ce nœud n'est utilisé. FieldList ne peut pas contenir à la fois Value et Element ou ElementNode. |
Field |
Spécifie les données qui sont extraites en tant que champ de dataset. |
Attribute |
Paire nom-valeur dans ElementNode. Par exemple, dans le nœud d'élément <Customer ID="1">, ID est un attribut et @ID(Integer) retourne "1" comme type d'entier dans l'ID de champ de données correspondant. |
Value |
Valeur de l'élément. Value peut être utilisé uniquement sur le dernier ElementNode dans le chemin d'accès à l'élément. Par exemple, étant donné que <Return> est un nœud terminal, si vous l'incluez à la fin d'un chemin d'accès à l'élément, la valeur de Return {@} est Chair. |
Element |
Valeur du sous-élément nommé. Par exemple, Customers {}/Customer {}/LastName récupère des valeurs pour l'élément LastName uniquement. |
Type |
Type de données facultatif utilisé pour le champ créé à partir de cet élément. |
NamespacePrefix |
NamespacePrefix est défini dans l'élément de requête XML. S'il n'existe aucun élément de requête XML, les espaces de noms dans ElementPath XML sont ignorés. S'il existe un élément de requête XML, ElementPath XML possède un attribut IgnoreNamespaces facultatif. Si la valeur de IgnoreNamespaces est true, les espaces de noms dans ElementPath XML et le document XML sont ignorés. Pour plus d'informations, consultez Syntaxe de requête XML employée pour la spécification des données de rapport XML. |
Exemples - Aucun espace de noms
Les exemples suivants utilisent le document XML Customers.xml. Ce tableau présente des exemples de syntaxe du chemin d'accès à l'élément et les résultats de l'utilisation du chemin d'accès à l'élément dans une requête qui définit un dataset, en fonction du document XML comme source de données.
[!REMARQUE]
Lorsque le chemin d'accès à l'élément est vide, la requête utilise le chemin d'accès à l'élément par défaut : le premier chemin d'accès vers une collection de nœuds terminaux. Dans le premier exemple, laisser un chemin d'accès à l'élément vide équivaut à spécifier le chemin d'accès à l'élément /Customers/Customer/Orders/Order. L'ensemble des attributs et des valeurs de nœud, ainsi que le chemin d'accès, sont retournés dans le jeu de résultats, et les noms de nœuds et les noms d'attributs apparaissent en tant que champs du dataset.
Exemple |
Champs du dataset |
---|---|
Vide |
OrderQtyIDFirstNameLastNameCustomer.IDxmlns
Chair61BobbyMoore11https://www.adventure-works.com
Table12BobbyMoore11https://www.adventure-works.com
Sofa28CrystalHu20https://www.adventure-works.com
EndTables215WyattDiaz33https://www.adventure-works.com
|
Customers {}/Customer |
FirstNameLastNameID
BobbyMoore11
CrystalHu20
WyattDiaz33
|
Customers {}/Customer {}/LastName |
LastName
Moore
Hu
Diaz
|
Customers {}/Customer {}/Orders/Order {@,@Qty} |
OrderQty
Chair6
Table1
Sofa2
EndTables2
|
Customers {}/Customer/Orders/Order{ @ID(Integer)} |
Order.IDFirstNameLastNameID
1BobbyMoore11
2BobbyMoore11
8CrystalHu20
15WyattDiaz33
|
Document XML : Customers.xml
Pour vous entraîner avec les exemples de chemin d'accès à l'élément présentés dans la section précédente, vous pouvez copier ce code XML et l'enregistrer dans une URL à laquelle le Concepteur de rapports peut accéder, puis utiliser le document XML comme source de données XML : par exemple, https://localhost/Customers.xml.
<?xml version="1.0"?>
<Customers xmlns="https://www.adventure-works.com">
<Customer ID="11">
<FirstName>Bobby</FirstName>
<LastName>Moore</LastName>
<Orders>
<Order ID="1" Qty="6">Chair</Order>
<Order ID="2" Qty="1">Table</Order>
</Orders>
<Returns>
<Return ID="1" Qty="2">Chair</Return>
</Returns>
</Customer>
<Customer ID="20">
<FirstName>Crystal</FirstName>
<LastName>Hu</LastName>
<Orders>
<Order ID="8" Qty="2">Sofa</Order>
</Orders>
<Returns/>
</Customer>
<Customer ID="33">
<FirstName>Wyatt</FirstName>
<LastName>Diaz</LastName>
<Orders>
<Order ID="15" Qty="2">EndTables</Order>
</Orders>
<Returns/>
</Customer>
</Customers>
Vous pouvez également créer une source de données XML ne possédant aucune chaîne de connexion et incorporer Customers.XML dans la requête à l'aide de la procédure suivante :
Pour incorporer Customers.XML dans une requête
Créez une source de données XML avec une chaîne de connexion vide.
Créez un dataset pour la source de données XML.
Dans la boîte de dialogue Propriétés du dataset, cliquez sur Concepteur de requêtes. La boîte de dialogue du concepteur de requêtes textuelles s'ouvre.
Dans le volet de requête, entrez les deux lignes suivantes :
<Query>
<XmlData>
Copiez Customers.XML et collez le texte dans le volet de requête après <XmlData>.
Dans le volet de requête, supprimez la première ligne que vous avez copiée à partir de Customers.XML : <?xml version="1.0"?>
À la fin de la requête, ajoutez les deux lignes suivantes :
<XmlData>
<Query>
Cliquez sur Exécuter la requête.
Le jeu de résultats affiche 4 lignes de données avec les colonnes suivantes : xmlns, Customer.ID, FirstName, LastName, ID, Qty, Order.
Cliquez sur OK.
Voir aussi