Синтаксис пути к элементу для определения XML-данных отчета

Изменения: 17 июля 2006 г.

В конструкторе отчетов для определения данных из источника XML, которые должны использоваться в отчете, указывается путь к элементу с учетом регистра. Путь к элементу — это путь по иерархическим XML-узлам в источнике XML-данных и атрибуты этих узлов. Чтобы использовать путь к элементу по умолчанию, оставьте пустым запрос набора данных или XML ElementPath для XML-Query. При получении данных из источника XML-данных узлы элементов, которые имеют текстовые значения и атрибуты узла элемента, преобразуются в столбцы результирующего набора. При выполнении запроса значения этих узлов и атрибуты преобразуются в данные строк. Столбцы соответствуют полям в наборе данных и отображаются в окне набора данных при нажатии кнопки Обновить поля на панели инструментов. В этом разделе содержится информация о синтаксисе пути к элементу.

ms365158.note(ru-ru,SQL.90).gifПримечание.
Синтаксис пути к элементу не зависит от пространства имен. Для указания пространств имен в пути к элементу используйте XML-запрос с XML-элементом ElementPath, описанным в разделе Синтаксис элемента XML Query для задания 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(ru-ru,SQL.90).gifПримечание.
В XML-тегах различается регистр символов. Определение ElementNode в пути к элементу должно точно соответствовать XML-тегам в источнике данных.
Термин Определение

Путь к элементу

Определяет последовательность узлов, которые необходимо пройти в XML-документе, чтобы получить поля данных для набора данных из источника XML-данных.

ElementNode

XML-узел в XML-документе. Узлы обозначаются тегами и находятся в иерархической связи с другими узлами. Например, <Customers> является корневым элементом узла. <Customer> является подэлементом <Customers>.

XMLName

Имя узла. Например, именем узла Customers является Customers. Чтобы дать каждому узлу уникальное имя, XMLName может иметь префикс с идентификатором пространства имен.

Encoding

Указывает, что Value для этого элемента закодировано на языке XML, требует декодирования и включается как подэлемент этого элемента.

FieldList

Определяет набор элементов и атрибутов, используемых для получения данных.

Если не указано иное, все атрибуты и подэлементы используются в качестве полей. Если задан пустой список полей ({}), поля из этого узла не используются.

FieldList не может одновременно содержать Value и Element или ElementNode.

Field

Определяет данные, извлекаемые как поле набора данных.

Attribute

Пара «имя-значение» в ElementNode. Например, ID в узле элемента <Customer ID="1"> является атрибутом, а @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. Если параметр IgnoreNamespaces равен true, пространства имен в XML ElementPath и XML-документе не обрабатываются. Дополнительные сведения см. в разделе Синтаксис элемента XML Query для задания XML-данных отчета.

Пример (без пространств имен)

В следующих примерах используется XML-документ Customers.xml. Эта таблица содержит примеры синтаксиса пути к элементу и результаты использования пути в запросе. Источником данных является XML-документ.

ms365158.note(ru-ru,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-данных, не имеющий строки соединения, и включить Customers.XML в тег <XmlData> элемента 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