Syntax für Elementpfade für XML-Berichtsdaten (SSRS)
Im Berichts-Designer geben Sie die Daten, die für einen Bericht aus einer XML-Datenquelle verwendet werden sollen, durch Definieren eines Elementpfades (mit Unterscheidung von Groß-/Kleinschreibung) an. Mit einem Elementpfad wird angegeben, wie die hierarchischen XML-Knoten und ihre Attribute in der XML-Datenquelle durchsucht werden können. Lassen Sie die Datasetabfrage oder den XML- ElementPath der XML- Query leer, um den Standardelementpfad zu verwenden. Wenn Daten aus der XML-Datenquelle abgerufen werden, werden Elementknoten mit Textwerten und Elementknotenattribute im Resultset zu Spalten. Die Werte der Knoten und Attribute werden beim Ausführen der Abfrage zu Zeilendaten. Die Spalten werden als Datasetfeldauflistung im Berichtsdatenbereich angezeigt. In diesem Thema wird die Syntax für Elementpfade beschrieben.
Hinweis
Die Syntax von Elementpfaden ist nicht vom Namespace abhängig. Verwenden Sie die XML-Abfragesyntax, die ein XML-Element ElementPath enthält, das unter XML-Abfragesyntax für XML-Berichtsdaten (SSRS) beschrieben ist, um Namespaces in einem Elementpfad zu verwenden.
In der folgenden Tabelle werden Konventionen für das Definieren eines Elementpfades beschrieben.
Konvention | Syntaxelemente |
---|---|
Fett | Text, der genau so geschrieben werden muss wie dargestellt. |
| (senkrechter Strich) | Trennt Syntaxelemente voneinander. Sie können nur eines der Elemente auswählen. |
[ ] (eckige Klammern) |
Optionale Syntaxelemente. Geben Sie die eckigen Klammern nicht mit ein. |
{ } (geschweifte Klammern) | Begrenzt Parameter für Syntaxelemente. |
[ , ...n] | Zeigt an, dass das vorherige Element n -mal wiederholt werden kann. Die einzelnen Vorkommen werden durch Kommas getrennt. |
Syntax
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.
Bemerkungen
In der folgenden Tabelle sind Begriffe für Pfadelemente zusammengefasst. Die Beispiele in der Tabelle beziehen sich auf das XML-Beispieldokument Customers.xml, das im Abschnitt mit Beispielen in diesem Thema enthalten ist.
Hinweis
Bei XML-Tags wird zwischen Groß- und Kleinschreibung unterschieden. Wenn Sie im Elementpfad einen Elementknoten (ElementNode) angeben, müssen die XML-Tags in der Datenquelle genau übereinstimmen.
Begriff | Definition |
---|---|
Elementpfad | Definiert die zu durchsuchende Sequenz von Knoten im XML-Dokument, um Felddaten für ein Dataset mit einer XML-Datenquelle abzurufen. |
ElementNode | Der XML-Knoten im XML-Dokument. Knoten werden durch Tags gekennzeichnet und sind in einer hierarchischen Beziehung mit anderen Knoten vorhanden. Bei <Kunden> handelt es sich beispielsweise um den Stammknoten des Elements. <Kunde> ist ein untergeordnetes Element von <Kunden>. |
XMLName | Der Name des Knotens. Der Name des Knotens Customers ist beispielsweise Customers. Für XMLName kann ein Namespacebezeichner als Präfix verwendet werden, um jeden Knoten eindeutig zu benennen. |
Codieren | Gibt an, dass der Value für dieses Element codiertes XML darstellt und decodiert werden sowie als untergeordnetes Element dieses Elements aufgenommen muss. |
FieldList | Definiert eine Gruppe von Elementen und Attributen, die zum Abrufen von Daten verwendet werden. Wenn dieses Element nicht angegeben wird, werden alle Attribute und untergeordneten Elemente als Felder verwendet. Wenn die leere Feldliste angegeben wird ( {} ), werden keine Felder von diesem Knoten verwendet. Eine FieldList kann nicht gleichzeitig einen Value und ein Element oder einen ElementNodeenthalten. |
Feld | Gibt die Daten an, die als Datasetfeld abgerufen werden. |
Attribut | Ein Name/Wert-Paar innerhalb von ElementNode. Beispielsweise handelt es sich bei ID im Elementknoten <Customer ID="1"> um ein Attribut, und @ID(Integer) gibt „1“ als Integer-Typ in der entsprechenden Datenfeld-ID zurück. |
Wert | Der Wert des Elements. Value kann nur für den letzten ElementNode im Elementpfad verwendet werden. Da es sich beispielsweise bei <Return> um einen Blattknoten handelt, ist der Wert von Return {@}Chair. |
Element | Der Wert des benannten untergeordneten Elements. Beispielsweise werden mithilfe von Customers {}/Customer {}/LastName nur Werte für das LastName-Element abgerufen. |
Typ | Der optionale Datentyp, der für das aus diesem Element erstellte Feld zu verwenden ist. |
NamespacePrefix | NamespacePrefix wird im XML-Abfrageelement definiert. Wenn kein XML-Abfrageelement vorhanden ist, werden Namespaces im XML- ElementPath ignoriert. Wenn ein XML-Abfrageelement vorhanden ist, verfügt der XML- ElementPath über das optionale Attribut IgnoreNamespaces. Wenn IgnoreNamespaces TRUEist, werden Namespaces in XML- ElementPath und im XML-Dokument ignoriert. Weitere Informationen finden Sie unter XML-Abfragesyntax für XML-Berichtsdaten (SSRS). |
Beispiel – Keine Namespaces
In den folgenden Beispiele wird das XML-Dokument "Customers.xml" verwendet. Diese Tabelle zeigt Beispiele zur Syntax von Elementpfaden und die Ergebnisse beim Verwenden des Elementpfades in einer Abfrage an, die ein Dataset anhand eines als Datenquelle dienenden XML-Dokuments definiert.
Hinweis
Wenn der Elementpfad leer ist, wird für die Abfrage der Standardelementpfad verwendet: der erste Pfad zur Blattknotenauflistung. Im ersten Beispiel entspricht das Leerlassen des Elementpfades dem Angeben des Elementpfades /Customers/Customer/Orders/Order. Alle Knotenwerte und -attribute entlang dieses Pfades werden im Resultset zurückgegeben, und die Knotennamen und -attribute werden als Datasetfelder angezeigt.
Beispiel 1: Leer
Order | Qty (Menge) | id | FirstName | LastName | Customer.ID | xmlns |
---|---|---|---|---|---|---|
Chair | 6 | 1 | Bobby | Moore | 11 | https://www.adventure-works.com |
Tabelle | 1 | 2 | Bobby | Moore | 11 | https://www.adventure-works.com |
Sofa | 2 | 8 | Crystal | Hu | 20 | https://www.adventure-works.com |
EndTables | 2 | 15 | Wyatt | Diaz | 33 | https://www.adventure-works.com |
Beispiel 2: Customers {}/Customer
FirstName | LastName | id |
---|---|---|
Bobby | Moore | 11 |
Crystal | Hu | 20 |
Wyatt | Diaz | 33 |
Beispiel 3: Customers {}/Customer {}/LastName
LastName |
---|
Moore |
Hu |
Diaz |
Beispiel 4: Customers {}/Customer {}/Orders/Order {@,@Qty}
Order | Qty (Menge) |
---|---|
Chair | 6 |
Tabelle | 1 |
Sofa | 2 |
EndTables | 2 |
Beispiel 5: Customers {}/Customer/Orders/Order{ @ID(Integer)}
Order.ID | FirstName | LastName | id |
---|---|---|---|
1 | Bobby | Moore | 11 |
2 | Bobby | Moore | 11 |
8 | Crystal | Hu | 20 |
15 | Wyatt | Diaz | 33 |
XML-Dokument: Customers.xml
Um die Elementpfadbeispiele im vorherigen Abschnitt auszuprobieren, können Sie dieses XML-Dokument kopieren und unter einer URL speichern, auf die der Berichts-Designer zugreifen kann. Anschließend können Sie das XML-Dokument als XML-Datenquelle verwenden: z. B. https://localhost/Customers.xml
<?xml version="1.0"?>
<Customers xmlns="http://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>
Sie können auch eine XML-Datenquelle ohne Verbindungszeichenfolge erstellen und Customers.XML in die Abfrage einbetten. Gehen Sie dazu wie folgt vor:
So betten Sie Customers.XML in einer Abfrage ein
Erstellen Sie eine XML-Datenquelle mit einer leeren Verbindungszeichenfolge.
Erstellen Sie ein neues Dataset für die XML-Datenquelle.
Klicken Sie im Dialogfeld Dataseteigenschaften auf Abfrage-Designer. Das textbasierte Dialogfeld des Abfrage-Designers wird geöffnet.
Geben Sie die folgenden Zeilen im Abfragebereich ein:
<Query>
<XmlData>
Kopieren Sie die Datei Customers.XML, und fügen Sie den Text im Abfragebereich nach der Zeile
<XmlData>
ein.Löschen Sie im Abfragebereich die erste Zeile, die Sie aus der Datei Customers.XML kopiert haben:
<?xml version="1.0"?>
Fügen Sie am Ende der Abfrage die beiden folgenden Zeilen hinzu:
<XmlData>
<Query>
Klicken Sie auf Abfrage ausführen (!).
Das Resultset zeigt vier Datenzeilen mit den folgenden Spalten an:
xmlns
,Customer.ID
,FirstName
,LastName
,ID
,Qty
,Order
Wählen Sie OK aus.