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

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

ПримечаниеПримечание

Синтаксис пути к элементу не зависит от пространства имен. Для указания пространств имен в пути к элементу используйте XML-запрос с XML-элементом ElementPath, описанным в разделе Синтаксис элемента XML Query для задания XML-данных отчета (службы SSRS).

В следующей таблице указаны обозначения, используемые для определения пути к элементу.

Обозначение

Для чего используется

полужирный

Текст, который должен вводиться точно так, как показано.

| (вертикальная черта)

Разделяет элементы синтаксиса. Можно выбрать только один из элементов.

[ ] (квадратные скобки)

Необязательные элементы синтаксиса. Скобки не вводятся.

{ } (фигурные скобки)

Разделяют параметры элементов синтаксиса.

[,...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 в подразделе «Примеры» этого раздела.

ПримечаниеПримечание

В 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-данных отчета (службы SSRS).

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

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

ПримечаниеПримечание

Если путь к элементу пуст, запрос использует путь к элементу по умолчанию: первый путь к коллекции конечного узла. В первом примере пустой путь к элементу эквивалентен указанию пути /Customers/Customer/Orders/Order. Все значения узлов и атрибуты на этом пути возвращаются в результирующем наборе, а имена узлов и имена атрибутов представляются в качестве полей набора данных.

Пример

Поля в наборе данных

Не заполнено

OrderQtyIDFirstNameLastNameCustomer.IDxmlns
Chair61BobbyMoore11https://www.adventure-works.com
Table12BobbyMoore11https://www.adventure-works.com
Sofa28CrystalHu20https://www.adventure-works.com
EndTables215WyattDiaz33https://www.adventure-works.com

Customers {}/Customer

FirstNameLastNameID
BobbyMoore11
CrystalHu20
WyattDiaz33

Customers {}/Customer {}/LastName

LastName
Moore
Hu
Diaz

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

OrderQty
Chair6
Table1
Sofa2
EndTables2

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

Order.IDFirstNameLastNameID
1BobbyMoore11
2BobbyMoore11
8CrystalHu20
15WyattDiaz33

XML-документ: Customers.xml

Чтобы проверить примеры пути к элементу из предыдущего раздела, можно скопировать этот XML-документ и сохранить его в URL-адресе, доступном из конструктора отчетов, а затем использовать этот XML-документ в качестве источника XML-данных, например https://localhost/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-данных без строки соединения и внедрить документ Customers.XML в запрос с помощью следующей процедуры:

Внедрение документа Customers.XML в запрос

  1. Создайте источник XML-данных с пустой строкой соединения.

  2. Создайте новый набор данных для источника XML-данных.

  3. В диалоговом окне Свойства набора данных нажмите кнопку Конструктор запросов. Откроется текстовое диалоговое окно конструктора запросов.

  4. В панели запросов введите следующие две строки:

    <Query>

    <XmlData>

  5. Скопируйте содержимое документа Customers.XML и вставьте его в панель запроса после <XmlData>.

  6. В панели запроса удалите первую строку, скопированную из документа Customers.XML: <?xml version="1.0"?>

  7. В конце запроса добавьте две следующие строки:

    <XmlData>

    <Query>

  8. Нажмите кнопку Выполнить запрос (!).

    В результирующем наборе будет 4 строки данных со следующими столбцами: xmlns, Customer.ID, FirstName, LastName, ID, Qty, Order.

  9. Нажмите кнопку ОК.