XML レポート データの要素パス構文 (SSRS)Element Path Syntax for XML Report Data (SSRS)

レポート デザイナーでは、大文字と小文字が区別される要素パスを定義して、レポートに使用するデータを XML データ ソースから指定します。In Report Designer, you specify the data to use for a report from an XML data source by defining a case-sensitive element path. 要素パスとは、XML データ ソースにおける XML 階層のノードとその属性の走査方法を指定するものです。An element path indicates how to traverse the XML hierarchical nodes and their attributes in the XML data source. データセット クエリを空にするか、XML Query の XML ElementPath を空にした場合、既定の要素パスが使用されます。To use the default element path, leave the dataset query or the XML ElementPath of the XML Query empty. XML データ ソースからデータが取得されると、テキスト値を持つ要素ノードおよび要素ノードの属性が、結果セットにおける列になります。When data is retrieved from the XML data source, element nodes that have text values and element node attributes become columns in the result set. クエリを実行すると、これらのノードと属性の値が、行データになります。The values of the nodes and attributes become the row data when you run the query. [レポート データ] ペインでは、列がデータセット フィールド コレクションとして表示されます。The columns appear as the dataset field collection in the Report Data pane. このトピックでは、要素パス構文について説明します。This topic describes the element path syntax.

注意

要素パス構文は、名前空間に依存しません。Element path syntax is namespace-independent. 要素パスで名前空間を使用するには、XML ElementPath 要素 (「XML レポート データの XML クエリ構文 (SSRS)」を参照) を含む XML クエリ構文を使用します。To use namespaces in an element path, use the XML query syntax that includes an XML ElementPath element described in XML Query Syntax for XML Report Data (SSRS).

次の表に、要素パスを定義する際の表記規則を示します。The following table describes conventions used to define an element path.

表記Convention 使用目的Used for
太字bold 記載されているとおりに入力する必要があるテキストを示します。Text that must be typed exactly as shown.
(& a) #124 です。(縦棒)| (vertical bar) 構文項目に複数の選択肢があることを示します。Separates syntax items. 選択できる項目は 1 つだけです。You can choose only one of the items.
[ ] (角かっこ)[ ] (brackets) 省略可能な構文項目。Optional syntax items. 角かっこは入力しません。Do not type the brackets.
{ } (中かっこ){ } (braces) 構文項目のパラメーターを区切ります。Delimits parameters of syntax items.
[ , ...n][,...n] 先行する項目を n 回繰り返せることを示します。Indicates the preceding item can be repeated n number of times. 項目はコンマで区切ります。The occurrences are separated by commas.

構文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.   

RemarksRemarks

次の表は、要素パス関連の用語をまとめたものです。The following table summarizes element path terms. サンプル XML ドキュメントである Customers.xml (このトピックの「例」を参照) を使って説明しています。Examples in the table refer to the example XML document Customers.xml, which is included in the Examples section of this topic.

注意

XML タグでは大文字と小文字が区別されます。XML tags are case-sensitive. 要素パスに ElementNode を指定する場合は、データ ソース内の XML タグと完全に一致させる必要があります。When you specify an ElementNode in the element path, you must exactly match the XML tags in the data source.

項目Term 定義Definition
Element pathElement path XML ドキュメント内のノードのシーケンス、つまり、どのようにノードをたどっていけば、XML データ ソースからデータセットのフィールド データを取得できるかを定義します。Defines the sequence of nodes to traverse within the XML document in order to retrieve field data for a dataset with an XML data source.
ElementNodeElementNode XML ドキュメント内の XML ノードです。The XML node in the XML document. 各ノードは他のノードと階層的な関係にあり、タグによって指定されます。Nodes are designated by tags and exist in a hierarchical relationship with other nodes. たとえば、<Customers> は、ルート要素ノードです。For example, <Customers> is the root element node. <Customer> は、<Customers> のサブ要素です。<Customer> is a subelement of <Customers>.
XMLNameXMLName ノードの名前。The name of the node. たとえば、Customers ノードの名前は Customers です。For example, the name of the Customers node is Customers. すべてのノード名を一意に識別できるように、 XMLName の先頭には名前空間識別子を付けることができます。An XMLName can be prefixed with a namespace identifier to uniquely name every node.
[エンコード]Encoding この要素の Value はエンコードされた XML であり、この要素のサブ要素としてデコードおよび追加する必要があることを示します。Indicates that the Value for this element is encoded XML and needs to be decoded and included as a subelement of this element.
FieldListFieldList データの取得に使用する一連の要素と属性を定義します。Defines the set of elements and attributes to use to retrieve data.

指定しなかった場合は、すべての属性およびサブ要素がフィールドとして使用されます。If not specified, all attributes and subelements are used as fields. 空のフィールド リストが指定されている場合 ( {} )、このノードのフィールドは使用されません。If the empty field list is specified ({}), no fields from this node are used.

FieldList には、 ValueElement または ElementNodeの両方が含まれない場合があります。A FieldList may not contain both a Value and an Element or ElementNode.
フィールドField データセットのフィールドとして取得するデータを指定します。Specifies the data that is retrieved as a dataset field.
属性Attribute ElementNode内に指定される名前と値のペアです。A name-value pair within the ElementNode. たとえば、要素ノード <Customer ID="1"> において、ID は属性です。 @ID(Integer) は、対応するデータ フィールド ID に整数型の "1" を返します。For example, in the element node <Customer ID="1">, ID is an attribute and @ID(Integer) returns "1" as an integer type in the corresponding data field ID.
ValueValue 要素の値です。The value of the element. Value は、要素パス内で最後の ElementNode でのみ使用できます。Value can only be used on the last ElementNode in the element path. たとえば、<Return> はリーフ ノードであるため、これを要素パスの最後に追加した場合、Return {@}Chair になります。For example, because <Return> is a leaf node, if you include it at the end of an element path, the value of Return {@} is Chair.
ElementElement 指定されたサブ要素の値です。The value of the named subelement. たとえば、Customers {}/Customer {}/LastName とすると、LastName 要素についてのみ値が取得されます。For example, Customers {}/Customer {}/LastName retrieves values for only the LastName element.
TypeType この要素から作成されたフィールドに使用するデータ型 (省略可) です。The optional data type to use for the field created from this element.
NamespacePrefixNamespacePrefix NamespacePrefix は XML Query 要素で定義されます。NamespacePrefix is defined in the XML Query element. XML Query 要素が存在しない場合、XML ElementPath の名前空間は無視されます。If no XML Query element exists, namespaces in the XML ElementPath are ignored. XML Query 要素が存在する場合は、XML ElementPath に属性 IgnoreNamespacesを使用できます (省略可)。If there is an XML Query element, the XML ElementPath has an optional attribute IgnoreNamespaces. IgnoreNamespaces が trueの場合、XML ElementPath と XML ドキュメントの名前空間は無視されます。If IgnoreNamespaces is true, namespaces in the XML ElementPath and the XML document are ignored. 詳細については、「XML レポート データの XML クエリ構文 (SSRS)」を参照してください。For more information, see XML Query Syntax for XML Report Data (SSRS).

例 - 名前空間なしExample - No Namespaces

データ ソースとして、XML ドキュメント (Customers.xml) を使用した例を次に示します。The following examples use the XML document Customers.xml. 要素パスの構文を示しながら、データセットを定義するクエリでその要素パスを使用した場合にどのような結果が得られるかを説明しています。This table shows examples of element path syntax and the results of using the element path in a query that defines a dataset, based on the XML document as a data source.

注意

要素パスが空の場合、クエリには、既定の要素パス (リーフ ノード コレクションの最初のパス) が使用されます。When the element path is empty, the query uses the default element path: the first path to a leaf node collection. 1 つ目は要素パスを空にする例です。/Customers/Customer/Orders/Order という要素パスを指定した場合と同じ結果になります。In the first example, leaving the element path empty is equivalent to specifying the element path /Customers/Customer/Orders/Order. このパス上に存在するすべてのノードの値と属性が結果セットに返され、ノード名と属性名がデータセットのフィールドとして表示されます。All node value and attributes along the path are returned in the result set, and the node names and attributes names appear as dataset fields.

例 1: Example #1: Empty

OrderOrder QtyQty IDID FirstNameFirstName LastNameLastName Customer.IDCustomer.ID xmlnsxmlns
ChairChair 66 11 BobbyBobby MooreMoore 1111 https://www.adventure-works.comhttps://www.adventure-works.com
テーブルTable 11 22 BobbyBobby MooreMoore 1111 https://www.adventure-works.comhttps://www.adventure-works.com
SofaSofa 22 88 CrystalCrystal HuHu 2020 https://www.adventure-works.comhttps://www.adventure-works.com
EndTablesEndTables 22 1515 WyattWyatt DiazDiaz 3333 https://www.adventure-works.comhttps://www.adventure-works.com

例 2: Customers {}/CustomerExample #2: Customers {}/Customer

FirstNameFirstName LastNameLastName IDID
BobbyBobby MooreMoore 1111
CrystalCrystal HuHu 2020
WyattWyatt DiazDiaz 3333

例 3: Customers {}/Customer {}/LastNameExample #3: Customers {}/Customer {}/LastName

LastNameLastName
MooreMoore
HuHu
DiazDiaz

例 4: Customers {}/Customer {}/Orders/Order {@,@Qty}Example #4: Customers {}/Customer {}/Orders/Order {@,@Qty}

OrderOrder QtyQty
ChairChair 66
テーブルTable 11
SofaSofa 22
EndTablesEndTables 22

例 5: Customers {}/Customer/Orders/Order{ @ID(Integer)}Example #5: Customers {}/Customer/Orders/Order{ @ID(Integer)}

Order.IDOrder.ID FirstNameFirstName LastNameLastName IDID
11 BobbyBobby MooreMoore 1111
22 BobbyBobby MooreMoore 1111
88 CrystalCrystal HuHu 2020
1515 WyattWyatt DiazDiaz 3333

XML ドキュメント: Customers.xmlXML document: Customers.xml

前のセクションの要素パスの例を試すには、この XML をコピーして、レポート デザイナーからアクセス可能な URL に保存した後、この XML ドキュメントを XML データ ソースとして使用します (例: https://localhost/Customers.xml)。To try out the element path examples in the previous section, you can copy this XML and save it to a URL that is accessible by Report Designer, and then use the XML document as an XML data source: for example, 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>  

または、次のプロシージャを使用して、接続文字列のない XML データ ソースを作成し、クエリに Customers.XML を埋め込むこともできます。Alternatively, you can create an XML data source that has no connection string and embed Customers.XML in the query, using the following procedure:

クエリに Customers.XML を埋め込むにはTo embed Customers.XML in a query
  1. 空白の接続文字列を使用して、XML データ ソースを作成します。Create an XML data source with a blank connection string.

  2. XML データ ソースに新しいデータセットを作成します。Create a new dataset for the XML data source.

  3. [データセットのプロパティ] ダイアログ ボックスの [クエリ デザイナー] をクリックします。In the Dataset Properties dialog box, click Query Designer. テキスト ベースのクエリ デザイナー ダイアログ ボックスが表示されます。The text-based query designer dialog box opens.

  4. クエリ ペインに次の 2 行を入力します。In the query pane, enter the following two lines:

    <Query>

    <XmlData>

  5. Customers.XML をコピーし、クエリ ペインで、 <XmlData>の後にそのテキストを貼り付けます。Copy Customers.XML and paste the text in the query pane after <XmlData>.

  6. クエリ ペインで、Customers.XML からコピーした最初の行を削除します。 <?xml version="1.0"?>In the query pane, delete the first line that you copied from Customers.XML: <?xml version="1.0"?>

  7. クエリの最後に次の 2 行を追加します。At the end of the query, add the following two lines:

    <XmlData>

    <Query>

  8. [クエリの実行] (!) をクリックします。Click Run Query (!).

    xmlnsCustomer.IDFirstNameLastNameIDQtyOrderという列を含む 4 行のデータが結果セットに表示されます。The result set displays 4 lines of data with the following columns: xmlns, Customer.ID, FirstName, LastName, ID, Qty, Order.

  9. [OK] をクリックします。Click OK.

参照See Also

XML の接続の種類 (SSRS) XML Connection Type (SSRS)
Reporting Services チュートリアル (SSRS) Reporting Services Tutorials (SSRS)
レポート データ ペインでのフィールドの追加、編集、更新 (レポート ビルダーおよび SSRS)Add, Edit, Refresh Fields in the Report Data Pane (Report Builder and SSRS)