Поделиться через


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

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

Примечание

Синтаксис пути к элементу не зависит от пространства имен. Для указания пространств имен в пути к элементу используйте XML-запрос с XML-элементом ElementPath, описанным в статье Синтаксис запроса XML для 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.   

Remarks

В следующей таблице указаны термины пути к элементу. Примеры в этой таблице ссылаются на учебный XML-документ Customers.xml в подразделе «Примеры» этого раздела.

Примечание

В XML-тегах различается регистр символов. Определение ElementNode в пути к элементу должно точно соответствовать XML-тегам в источнике данных.

Термин Определение
Путь к элементу Определяет последовательность узлов, которые необходимо пройти в XML-документе, чтобы получить поля данных для набора данных из источника XML-данных.
ElementNode XML-узел в XML-документе. Узлы обозначаются тегами и находятся в иерархической связи с другими узлами. Например, <Customers> является корневым элементом узла. <Customer> является вложенным элементом узла <Customers>.
XMLName Имя узла. Например, именем узла Customers является Customers. Чтобы дать каждому узлу уникальное имя, XMLName может иметь префикс с идентификатором пространства имен.
Кодирование Указывает, что Value для этого элемента закодировано на языке XML, требует декодирования и включается как подэлемент этого элемента.
FieldList Определяет набор элементов и атрибутов, используемых для получения данных.

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

FieldList не может одновременно содержать Value и Element или ElementNode.
Поле Определяет данные, извлекаемые как поле набора данных.
Attribute Пара "имя-значение" в ElementNode. Например, в узле элемента <Customer ID="1">, ID является атрибутом, а @ID(Integer) возвращает значение 1 с типом целочисленных данных (integer) из соответствующего поля данных ID.
Значение Значение элемента. Value может использоваться для последнего ElementNode в пути к элементу. Например, <Return> является конечным узлом. Если включить его в конце пути к элементу, Return {@} будет возвращать значение Chair.
Element Значение именованного подэлемента. Например, Customers {}/Customer {}/LastName извлекает значения только для элемента LastName.
Тип Необязательный тип данных, который должен использоваться для поля, созданного из этого элемента.
NamespacePrefix NamespacePrefix определяется в элементе XML-запроса. Если элемента XML-запроса не существует, пространства имен в XML ElementPath не обрабатываются. Если элемент XML-запроса существует, XML ElementPath имеет необязательный атрибут IgnoreNamespaces. Если IgnoreNamespaces имеет значение true, пространства имен в XML ElementPath и XML-документ не обрабатываются. Дополнительные сведения см. в разделе Синтаксис запроса XML для XML-данных отчета (SSRS).

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

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

Примечание

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

Пример 1. Пусто

Порядок Количество ID FirstName LastName Customer.ID xmlns
Chair 6 1 Bobby Moore 11 https://www.adventure-works.com
Таблица 1 2 Bobby Moore 11 https://www.adventure-works.com
Sofa 2 8 Crystal Hu 20 https://www.adventure-works.com
EndTables 2 15 Wyatt Diaz 33 https://www.adventure-works.com

Пример 2: Customers {}/Customer

FirstName LastName ID
Bobby Moore 11
Crystal Hu 20
Wyatt Diaz 33

Пример 3: Customers {}/Customer {}/LastName

LastName
Moore
Hu
Diaz

Пример 4: Customers {}/Customer {}/Orders/Order {@,@Qty}

Порядок Количество
Chair 6
Таблица 1
Sofa 2
EndTables 2

Пример 5: Customers {}/Customer/Orders/Order{ @ID(Integer)}

Order.ID FirstName LastName ID
1 Bobby Moore 11
2 Bobby Moore 11
8 Crystal Hu 20
15 Wyatt Diaz 33

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

Чтобы проверить примеры пути к элементу из предыдущего раздела, можно скопировать этот XML-документ и сохранить его в URL-адресе, доступном из конструктора отчетов, а затем использовать этот XML-документ в качестве источника XML-данных, например https://localhost/Customers.xml.

<?xml version="1.0"?>  
<Customers xmlns="http://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. Щелкните ОК.

См. также:

Тип соединения XML (службы SSRS)
Учебники по службам Reporting Services (SSRS)
Добавление, изменение и обновление полей в области данных отчета (построитель отчетов и службы SSRS)