用于指定 XML 报表数据的元素路径语法

更新日期: 2006 年 7 月 17 日

在报表设计器中,可以通过定义元素路径(区分大小写)来指定 XML 数据源中要用于报表的数据。元素路径指示如何遍历 XML 数据源中的 XML 层次结构节点及其属性。若要使用默认元素路径,请将数据集查询或 XML Query 的 XML ElementPath 保留为空。从 XML 数据源检索数据时,具有文本值的元素节点和元素节点属性将成为结果集中的列。运行查询时,节点值和属性将成为行数据。单击工具栏上的**“刷新字段”**按钮时,列将映射到数据集中的字段,并显示在“数据集”窗口中。本主题介绍元素路径语法。

ms365158.note(zh-cn,SQL.90).gif注意:
元素路径语法与命名空间无关。若要在元素路径中使用命名空间,请使用包括用于指定 XML 报表数据的 XML 查询语法中介绍的 XML ElementPath 元素的 XML 查询语法。

下表介绍用于定义元素路径的约定。

约定 用于

粗体

必须完全按原样键入的文本。

|(竖线)

分隔语法项。只能选择其中一项。

[ ](方括号)

可选语法项。不要键入方括号。

{ }(大括号)

分隔语法项的参数。

[,...n]

指示前面的项可以重复 n 次。各项之间以逗号分隔。

语法

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. 

备注

下表总结了元素路径术语。该表中的示例引用示例 XML 文档 Customers.xml,该文档包含于本主题的“示例”部分中。

ms365158.note(zh-cn,SQL.90).gif注意:
XML 标记区分大小写。在元素路径中指定 ElementNode 时,必须完全匹配数据源中的 XML 标记。
术语 定义

元素路径

定义为了使用 XML 数据源检索数据集的字段数据而要在 XML 文档中遍历的节点序列。

ElementNode

XML 文档中的 XML 节点。节点由标记指定,并与其他节点之间存在层次结构关系。例如,<Customers> 是根元素节点。<Customer> 是 <Customers> 的子元素。

XMLName

节点的名称。例如,Customers 节点的名称为 Customers。XMLName 可以使用命名空间标识符作为前缀,以唯一命名每个节点。

Encoding

指示此元素的 Value 是编码的 XML,它需要解码并作为此元素的子元素。

FieldList

定义要用于检索数据的元素和属性集。

如果未指定,则所有属性和子元素都将用作字段。如果指定空的字段列表 ({}),则不使用此节点中的任何字段。

FieldList 不可以同时包含 Value 以及 ElementElementNode

Field

指定作为数据集字段检索的数据。

Attribute

ElementNode 中的“名称-值”对。例如,在元素节点 <Customer ID="1"> 中,ID 是属性,并且 @ID(Integer) 将返回“1”表示对应数据字段 ID 中的整数类型。

Value

元素的值。Value 只能在元素路径的最后一个 ElementNode 中使用。例如,由于 <Return> 是一个叶节点,因此如果将其包含于元素路径的结尾处,则 Return {@} 的值将为 Chair

Element

命名子元素的值。例如,Customers {}/Customer {}/LastName 仅检索 LastName 元素的值。

Type

用于从此元素创建的字段的可选数据类型。

NamespacePrefix

NamespacePrefix 在 XML 查询元素中定义。如果不存在 XML 查询元素,则将忽略 XML ElementPath 中的命名空间。如果存在 XML 查询元素,则 XML ElementPath 具有可选属性 IgnoreNamespaces。如果 IgnoreNamespacestrue,则将忽略 XML ElementPath 和 XML 文档中的命名空间。有关详细信息,请参阅用于指定 XML 报表数据的 XML 查询语法

示例 - 无命名空间

以下示例使用 XML 文档 Customers.xml。此表显示了元素路径语法的示例,以及在定义数据集(基于作为数据源的 XML 文档)的查询中使用元素路径的结果。

ms365158.note(zh-cn,SQL.90).gif注意:
当元素路径为空时,查询将使用默认元素路径:指向叶节点集合的第一个路径。在第一个示例中,将元素路径保留为空等效于指定元素路径 /Customers/Customer/Orders/Order。将在结果集中返回沿该路经分布的所有节点值和属性,并且节点名和属性名将显示为数据集字段。

示例

数据集中的字段

Order

Qty

ID

FirstName

LastName

Customer.ID

xmlns

Chair61BobbyMoore11https://www.adventure-works.com

Table12BobbyMoore11https://www.adventure-works.com

Sofa28CrystalHu20https://www.adventure-works.com

EndTables215WyattDiaz33https://www.adventure-works.com

Customers {}/Customer

FirstName

LastName

ID

BobbyMoore11

CrystalHu20

WyattDiaz33

Customers {}/Customer {}/LastName

LastName

Moore

Hu

Diaz

Customers {}/Customer {}/Orders/Order {@,@Qty}

Order

Qty

Chair6

Table1

Sofa2

EndTables2

Customers {}/Customer/Orders/Order{ @ID(Integer)}

Order.ID

FirstName

LastName

ID

1BobbyMoore11

2BobbyMoore11

8CrystalHu20

15WyattDiaz33

XML 文档:Customers.xml

若要试验上一节中的元素路径示例,可以复制此 XML 并将其保存到可通过报表设计器访问的 URL,然后使用该 XML 文档作为 XML 数据源:例如,https://localhost/Customers.xml。或者,也可以创建没有连接字符串的 XML 数据源,并在 XML 查询元素的 <XmlData> 标记中嵌入 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 数据

帮助和信息

获取 SQL Server 2005 帮助