用于指定 XML 报表数据的 XML 查询语法

更新日期: 2006 年 4 月 14 日

在 Reporting Services 中,可以为 XML 数据源创建数据集。定义数据源后,可以为数据集创建查询。根据数据源所指向的 XML 数据类型,可以通过包括 XML Query 或元素路径来创建数据集查询。XML Query<Query> 标记开头,并且包括因数据源而异的命名空间和 XML 元素。元素路径与命名空间无关,它使用与 XPath 类似的语法指定要使用的来自基础 XML 数据的节点和节点属性。有关元素路径的详细信息,请参阅用于指定 XML 报表数据的元素路径语法

可以为以下类型的 XML 数据创建 XML 数据源:

  • URL 使用 http 协议指向的 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 数据。

ms345251.note(zh-cn,SQL.90).gif注意:
当 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 文档本身派生而来的,并且与命名空间无关。

ms345251.note(zh-cn,SQL.90).gif注意:
第一个 Web 服务示例使用 ListChildren 方法列出报表服务器的内容。若要运行此查询,必须创建新的数据源并将连接字符串设置为 https://localhost/reportserver/reportservice2005.asmx。ListChildren 方法有两个参数:ItemRecursive。将 Item 的默认值设置为 / 并将 Recursive 设置为 1

指定命名空间

使用 XML Query 元素可以指定在数据源的 XML 数据中使用的命名空间。下面的 XML 查询使用命名空间 salessales:LineItemssales: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

值 Ahttps://schemas.microsoft.com/...

值 Bhttps://schemas.microsoft.com/...

值 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>

节点

值 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>

请参阅

概念

为 XML 数据定义报表数据集

其他资源

教程:在报表中使用 XML 数据

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

发布日期 历史记录

2006 年 4 月 14 日

新增内容:
  • 提供了 XML 查询语法的示例。