XML レポート データを指定するための XML クエリ構文
Reporting Services では、XML データ ソースのデータセットを作成できます。データセットを取得するためのクエリは、データ ソースを定義した後で作成します。データセット クエリを作成する際は、データ ソースが参照する XML データの種類に応じて、XML Query または要素パスを指定する必要があります。XML Query は、<Query> タグ内に、名前空間と XML 要素を指定したものです。指定する名前空間と XML 要素は、データ ソースによって異なります。要素パスは、基になる XML データから取り出すノードおよびノード属性を XPath に似た構文で指定するもので、名前空間には依存しません。要素パスの詳細については、「XML レポート データを指定するための要素パス構文」を参照してください。
次のような種類の 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 データ プロバイダによって作成されます。
注意 |
---|
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>http://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 ドキュメント (既定) |
No query. 要素パスは XML ドキュメントそのものから取得され、名前空間には依存しません。 |
注意 |
---|
最初に挙げた Web サービスの例では、ListChildren メソッドを使用するレポート サーバーのコンテンツを列挙しています。このクエリを実行するには、新しいデータ ソースを作成し、接続文字列を https://localhost/reportserver/reportservice2006.asmx に設定する必要があります。ListChildren メソッドは、Item と Recursive の 2 つのパラメータを受け取ります。Item の既定値は / に、Recursive の既定値は 1 に設定されます。 |
名前空間の指定
データ ソースから取得された XML データに使用する名前空間を指定するには、XML Query 要素を使用します。次の XML クエリには、名前空間 sales が使用されています。sales:LineItems および sales:LineItem の XML ElementPath ノードには、名前空間 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 Ahttps://schemas.microsoft.com/...
Value Bhttps://schemas.microsoft.com/...
Value Chttps://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>