Sintassi del percorso di elemento per la definizione di dati di report XML (SSRS)
In Progettazione report è possibile specificare i dati da utilizzare per un report da un'origine dei dati XML definendo un percorso di elemento con distinzione tra maiuscole e minuscole. Un percorso di elemento indica come attraversare i nodi gerarchici XML e i relativi attributi nell'origine dei dati XML. Per utilizzare il percorso di elemento predefinito, lasciare vuota la query del set di dati o il nodo ElementPath XML dell'elemento Query XML. Quando vengono recuperati i dati dall'origine dei dati XML, i nodi elemento con valori di testo e gli attributi dei nodi elemento diventano colonne del set di risultati. Quando si esegue la query, i valori dei nodi e degli attributi diventano i dati delle righe. Le colonne sono visualizzate come raccolta di campi di set di dati nel riquadro Dati report. In questo argomento viene descritta la sintassi del percorso di elemento.
Nota
La sintassi del percorso di elemento è indipendente dallo spazio dei nomi. Per utilizzare gli spazi dei nomi in un percorso di elemento, utilizzare la sintassi di query XML che includa un elemento ElementPath, come descritto in Sintassi di query XML per la definizione di dati di report XML (SSRS).
Nella tabella seguente vengono descritte le convenzioni utilizzate per definire un percorso di elemento.
Convenzione |
Utilizzo |
---|---|
grassetto |
Il testo deve essere digitato esattamente come illustrato. |
| (barra verticale) |
Separa gli elementi della sintassi. Indica che è possibile scegliere un solo elemento. |
[ ] (parentesi quadre) |
Elementi della sintassi facoltativi. Le parentesi quadre non devono essere digitate. |
{ } (parentesi graffe) |
Delimitano i parametri degli elementi della sintassi. |
[,...n] |
Indica che l'elemento precedente può essere ripetuto n volte. Le varie occorrenze dell'elemento sono separate da virgole. |
Sintassi
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.
Osservazioni
Nella tabella seguente sono riepilogati i termini del percorso di elemento. Gli esempi della tabella si riferiscono al documento XML di esempio Customers.xml, incluso nella sezione relativa agli esempi di questo argomento.
Nota
Nei tag XML viene fatta distinzione tra maiuscole e minuscole. Se nel percorso di elemento si specifica un nodo ElementNode, è necessario che corrisponda esattamente ai tag XML dell'origine dei dati.
Termine |
Definizione |
---|---|
Element path |
Definisce la sequenza di nodi da attraversare nel documento XML per recuperare i dati del campo di un set di dati con un'origine dei dati XML. |
ElementNode |
Nodo XML nel documento XML. I nodi sono designati da tag e sono correlati agli altri nodi in base a una relazione gerarchica. <Customers>, ad esempio, è il nodo elemento radice. <Customer> è un sottoelemento di <Customers>. |
XMLName |
Nome del nodo. Il nome del nodo Customers, ad esempio, è Customers. XMLName può essere preceduto da un identificatore dello spazio dei nomi, per assegnare a ogni nodo un nome univoco. |
Encoding |
Indica che il valore Value dell'elemento è un valore XML con codifica e deve essere decodificato e incluso come sottoelemento dell'elemento. |
FieldList |
Definisce il set di elementi e attributi da utilizzare per recuperare i dati. Se non specificato, vengono utilizzati come campi tutti gli attributi e i sottoelementi. Se viene specificato l'elenco di campi vuoto ({}), non verrà utilizzato alcun campo da tale nodo. Un elemento FieldList potrebbe non contenere sia Value che Element o ElementNode. |
Field |
Specifica i dati recuperati come campo del set di dati. |
Attribute |
Coppia nome-valore contenuta in ElementNode. Nel nodo elemento <Customer ID="1">, ad esempio, ID è un attributo e @ID(Integer) restituisce "1" come tipo integer nel campo dati ID corrispondente. |
Value |
Valore dell'elemento. Value può essere utilizzato solo nell'ultimo nodo ElementNode del percorso di elemento. Poiché, ad esempio, <Return> è un nodo foglia, se lo si include alla fine di un percorso di elemento, il valore di Return {@} è Chair. |
Element |
Valore del sottoelemento denominato. Customers {}/Customer {}/LastName recupera, ad esempio, i valori solo per l'elemento LastName. |
Type |
Tipo di dati facoltativo da utilizzare per il campo creato da questo elemento. |
NamespacePrefix |
NamespacePrefix è definito nell'elemento Query XML. Se non è presente alcun elemento Query XML, gli spazi dei nomi del nodo ElementPath XML vengono ignorati. Se è presente un elemento Query XML, il nodo ElementPath XML include un attributo IgnoreNamespaces facoltativo. Se IgnoreNamespaces è true, gli spazi dei nomi del nodo ElementPath XML e del documento XML vengono ignorati. Per ulteriori informazioni, vedere Sintassi di query XML per la definizione di dati di report XML (SSRS). |
Esempio - Nessuno spazio dei nomi
Negli esempi seguenti viene utilizzato il documento XML Customers.xml. In questa tabella sono illustrati esempi di sintassi del percorso di elemento e i risultati dell'utilizzo del percorso di elemento in una query per la definizione di un set di dati, basata sul documento XML come origine dei dati.
Nota
Quando il percorso di elemento è vuoto, per la query viene utilizzato il percorso di elemento predefinito, ovvero il primo percorso di una raccolta di nodi foglia. Nel primo esempio l'utilizzo di un percorso di elemento vuoto corrisponde alla definizione del percorso di elemento /Customers/Customer/Orders/Order. Tutti gli attributi e i valori del nodo nel percorso vengono restituiti nel set di risultati, mentre i nomi degli attributi e del nodo vengono visualizzati come campi del set di dati.
Esempio |
Campi del set di dati |
---|---|
Vuoto |
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
|
Documento XML: Customers.xml
Per provare gli esempi di percorso di elemento nella sezione precedente, è possibile copiare questo codice XML e salvarlo in un URL accessibile da Progettazione report, quindi utilizzare il documento XML come origine dati XML, ad esempio 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>
In alternativa, è possibile creare un'origine dati XML senza una stringa di connessione e incorporare Customers.XML nella query, attenendosi alla procedura seguente:
Per incorporare Customers.XML in una query
Creare un'origine dati XML con una stringa di connessione vuota.
Creare un nuovo set di dati per l'origine dati XML.
Nella finestra di dialogo Proprietà set di dati fare clic su Progettazione query. Verrà visualizzata la finestra di dialogo Progettazione query basata su testo.
Nel riquadro delle query immettere le due righe seguenti:
<Query>
<XmlData>
Copiare Customers.XML e incollare il testo nel riquadro delle query dopo <XmlData>.
Nel riquadro delle query eliminare la prima riga copiata da Customers.XML: <?xml version="1.0"?>
Aggiungere le due righe seguenti alla fine della query:
<XmlData>
<Query>
Fare clic su Esegui query.
Nel set di risultati vengono visualizzate 4 righe di dati con le colonne seguenti: xmlns, Customer.ID, FirstName, LastName, ID, Qty, Order.
Fare clic su OK.
Vedere anche