XML レポート データの XML クエリ構文 (SSRS)

Reporting Servicesでは、XML データ ソースのデータセットを作成できます。 データセットを取得するためのクエリは、データ ソースを定義した後で作成します。 データセット クエリを作成する際は、データ ソースが参照する XML データの種類に応じて、XML Query または要素パスを指定する必要があります。 XML クエリ<Query> タグで始まり、データ ソースによって異なる名前空間と XML 要素が含まれます。 要素パスは、基になる XML データから取り出すノードおよびノード属性を XPath に似た構文で指定するもので、名前空間には依存しません。 要素パスの詳細については、「XML レポート データの要素パス構文 (SSRS)」を参照してください。

次のような種類の XML データについて、XML データ ソースを作成できます。

  • HTTP プロトコルを使って URL で参照される XML ドキュメント

  • XML データを返す Web サービスのエンドポイント

  • 埋め込み XML データ

XML Query または要素パスの指定方法は、XML データの種類によって異なります。

XML ドキュメントの場合、XML Query は省略可能です。 省略しなかった場合、必要に応じて XML ElementPathを指定できます。 XML ElementPath の値には、要素パスの構文を使用します。 XML Query および XML ElementPath を指定することにより、データ ソースから取得された XML データに対して名前空間を適切に適用できます。

接続文字列の URL によって参照される Web サービスのエンドポイントの場合、XML Query には、Web サービス メソッドか SOAP アクション、またはその両方を定義します。 レポート用の XML データを取得するための Web サービス要求が XML データ プロバイダーによって作成されます。

Note

Web サービスの名前空間にスラッシュ ( /) 文字が含まれる場合は、XML データ処理拡張機能が名前空間を正確に取得できるように、Web サービス メソッドと SOAP アクションの両方を指定します。

埋め込み XML ドキュメントの場合、XML Query には、使用する埋め込み XML データを定義します。名前空間と XML ElementPathを指定することもできます (省略可能)。

XML データに対するクエリ パラメーターの指定

XML ドキュメントに対するクエリ パラメーターを指定することができます。

  • URL 要求の場合、クエリ パラメーターは標準の URL パラメーターとして含まれます。

  • Web サービス要求の場合、クエリ パラメーターは Web サービスのメソッドに渡されます。 クエリ パラメーターを定義するには、 [データセットのプロパティ] ダイアログ ボックスの [パラメーター] ページを使用します。

次の表は、データの取得方法の例を、レポート サーバー Web サービス、XML ドキュメント、埋め込み XML データのそれぞれについて示したものです。

XML データ ソース クエリの例
Web サービスの XML データ ( ListChildren メソッドから) <Query>

<Method Name="ListChildren" Namespace="https://schemas.microsoft.com/sqlserver/2005/06/30/reporting/reportingservices" />

</Query>
Web サービスの XML データ (SoapAction から) <Query xmlns=namespace>

<SoapAction>https://schemas/microsoft.com/sqlserver/2005/03/23/reporting/reportingservices/ListChildren</SoapAction>

</Query>
XML ドキュメントまたは埋め込み XML データ (名前空間を使用)

Query 要素 (要素パスに名前空間を指定)
<Query xmlns:es="https://schemas.microsoft.com/StandardSchemas/ExtendedSales">

<ElementPath>/Customers/Customer/Orders/Order/es:LineItems/es:LineItem</ElementPath>

</Query>
埋め込み XML ドキュメント <Query>

<XmlData>

<Customers>

<Customer ID="1">Bobby</Customer>

</Customers>

</XmlData>

<ElementPath>Customer {@}</ElementPath>

</Query>
XML ドキュメント (既定) クエリなし

要素パスは XML ドキュメントそのものから取得され、名前空間には依存しません。

Note

最初に挙げた Web サービスの例では、 ListChildren メソッドから) このクエリを実行するには、新しいデータ ソースを作成し、接続文字列を https://localhost/reportserver/reportservice2006.asmx に設定する必要があります。 ListChildren メソッドは 2 つのパラメーターItemRecursive を受け取ります。 Item の既定値は / に、 Recursive の既定値は 1に設定されます。

名前空間の指定

データ ソースから取得された XML データに使用する名前空間を指定するには、XML Query 要素を使用します。 次の XML クエリには、名前空間 salesが使用されています。 および の XML sales:LineItems ElementPath sales:LineItem ノードには、名前空間 salesが使用されています。

<Query xmlns:sales=  
"https://schemas.microsoft.com/StandardSchemas/ExtendedSales">  
   <SoapAction>  
      https://schemas.microsoft.com/SalesWebService/ListOrders   
   </SoapAction>  
   <ElementPath>  
      Customers/Customer/Orders/Order/sales:LineItems/sales:LineItem  
   </ElementPath>  
</Query>  

データ プロバイダーの名前空間を指定して、既定の名前空間を空のままにするには、 xmldpを使用します。 これを次の例に示します。

次の例では、DPNamespace.xml (後述) という XML ドキュメントが使用されています。 この表では、名前空間プレフィックスを使用した XML ElementPath 構文として、2 つの例を紹介します。

XML Query 要素 データセットとして取得されるフィールド
<Query/> Value A: https://schemas.microsoft.com/...

Value B: https://schemas.microsoft.com/...

Value C: https://schemas.microsoft.com/...
<xmldp:Query xmlns:xmldp="https://schemas.microsoft.com/sqlserver/2005/02/reporting/XmlDPQuery" xmlns:ns="https://schemas.microsoft.com/...">

<xmldp:ElementPath>Root {}/ns:Element2/Node</xmldp:ElementPath>

</xmldp:Query>
Value D

Value E

Value F

XML document: DPNamespace.xml

この XML をコピーして、レポート デザイナーからアクセスできる URL (https://localhost/DPNamespace.xml. など) に保存すると、XML データ ソースとして使用できます

<Root xmlns:ns="https://schemas.microsoft.com/...">  
   <ns:Element1>  
      <Node>Value A</Node>  
      <Node>Value B</Node>  
      <Node>Value C</Node>  
   </ns:Element1>  
   <ns:Element2>  
      <Node>Value D</Node>  
      <Node>Value E</Node>  
      <Node>Value F</Node>  
   </ns:Element2>  
</Root>  

参照

XML の接続の種類 (SSRS)
Reporting Services チュートリアル (SSRS)