Share via


指定 XML 報表資料的 XML 查詢語法 (SSRS)

在 Reporting Services 中,可以建立 XML 資料來源的資料集。當您定義資料來源之後,要建立此資料集的查詢。根據資料來源所指向的 XML 資料類型而定,您可藉由加入 XML Query 或元素路徑來建立資料集查詢。XML Query 會以 <Query> 標記做為開頭,而且會包含因資料來源而異的命名空間和 XML 元素。元素路徑與命名空間無關,而且會指定當搭配類似 XPath 語法使用基礎 XML 資料時,要使用哪些節點和節點屬性。如需有關元素路徑的詳細資訊,請參閱<指定 XML 報表資料的元素路徑語法 (SSRS)>。

您可以針對下列 XML 資料類型建立 XML 資料來源:

  • 使用 http 通訊協定由 URL 所指向的 Xml 文件

  • 傳回 XML 資料的 Web 服務端點

  • 內嵌 XML 資料

指定 XML Query 或元素路徑的方式會因 XML 資料類型而異。

如果是 XML 文件,則 XML Query 是選擇性的;如果它包含在內,它可以包含選擇性的 XML ElementPath,XML ElementPath 的值會使用元素路徑語法。當資料來源中的 XML 資料需要時,必須加入 XML Query 和 XML ElementPath,才能正確處理命名空間。

如果是連接字串 URL 所指向的 Web 服務端點,XML Query 會定義此 Web 服務方法、SOAP 動作,或兩者皆定義。XML 資料提供者會建立一個 Web 服務要求來擷取要用於報表的 XML 資料。

[!附註]

當 Web 服務命名空間包含斜線 (/) 字元時,請同時加入 Web 服務方法和 SOAP 動作,好讓 XML 資料處理延伸模組可以正確衍生此命名空間。

如果是內嵌 XML 文件,XML Query 會定義要使用的內嵌 XML 資料,以及包含選擇性命名空間和選擇性 XML ElementPath。

指定 XML 資料的查詢參數

您可以指定 XML 文件的查詢參數。

  • 針對 URL 要求,查詢參數會包含為標準 URL 參數。

  • 針對 Web 服務要求,查詢參數會傳遞至 Web 服務方法。若要定義查詢參數,請使用 [資料集屬性] 對話方塊的 [參數] 頁面。如需詳細資訊,請參閱<資料集屬性對話方塊、參數>。

範例

下表中的範例會說明如何從報表伺服器 Web 服務、XML 文件和內嵌 XML 資料中擷取資料。

XML 資料來源

查詢範例

ListChildren 方法中的 Web 服務 XML 資料。

<Query>

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

</Query>

SoapAction 中的 Web 服務 XML 資料。

<Query xmlns=namespace>

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

</Query>

使用命名空間的 XML 文件或內嵌 XML 資料。

指定元素路徑之命名空間的查詢元素。

<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。將 Item 的預設值設定為 /,並將 Recursive 的預設值設定為 1。

指定命名空間

使用 XML Query 元素可指定用於資料來源中 XML 資料的命名空間;下列 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;如下列範例所示。

範例

下列範例會使用 XML 文件 DPNamespace.xml,這個文件是當做表格之後的說明;這個表格會顯示包含命名空間前置詞的兩個 XML ElementPath 語法範例。

XML 查詢元素

在資料集中產生欄位

<Query/>

節點ns
A 值https://schemas.microsoft.com/...
B 值https://schemas.microsoft.com/...
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>

節點
D 值
E 值
F 值

XML 文件:DPNamespace.xml

您可以複製這段 XML,並將它儲存為報表設計師可以使用的 URL,以便當做 XML 資料來源使用;例如,https://localhost/DPNamespace.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>

請參閱

概念

其他資源