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

  1. Creare un'origine dati XML con una stringa di connessione vuota.

  2. Creare un nuovo set di dati per l'origine dati XML.

  3. Nella finestra di dialogo Proprietà set di dati fare clic su Progettazione query. Verrà visualizzata la finestra di dialogo Progettazione query basata su testo.

  4. Nel riquadro delle query immettere le due righe seguenti:

    <Query>

    <XmlData>

  5. Copiare Customers.XML e incollare il testo nel riquadro delle query dopo <XmlData>.

  6. Nel riquadro delle query eliminare la prima riga copiata da Customers.XML: <?xml version="1.0"?>

  7. Aggiungere le due righe seguenti alla fine della query:

    <XmlData>

    <Query>

  8. 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.

  9. Fare clic su OK.