Загрузка из XML

Материал из GB wiki
Версия от 18:12, 14 апреля 2010; Bars (обсуждение | вклад) (Новая страница: «Категория:XML == Понимание процесса преобразования XML в датасет == Датасет в ГБ представл…»)
(разн.) ← Предыдущая | Текущая версия (разн.) | Следующая → (разн.)
Перейти к: навигация, поиск

Понимание процесса преобразования XML в датасет

Датасет в ГБ представляет собой, в общем случае, таблицу, некоторые поля которой могут содержать вложенные таблицы (субсеты).

XML-файл представляет собой данные иерархической структуры.

Процесс преобразования XML-данных в датасет происходит так:

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

Заголовок шаблона

Заголовок шаблона определяет только кодировку данных, другие параметры игнорируются

<?xml version="1.0" encoding="utf-8"?> 

Имя схемы

Имя схемы используется для поиска данных в XML-файле, а также для поиска в шаблоне подходящей схемы преобразования, поскольку один шаблон может содержать любое число схем.

Для того, чтобы данные были найдены, имя схемы должно совпадать с именем какого-либо из непосредственных потомков корневого тэга.

Например, если имеется файл данных

<root>
 <товары>
...
 </товары>
 <адреса>
...
 </адреса>
</root>

имя схемы должно быть либо товары, либо адреса. Имя корневого тэга по умолчанию можно изменить, вызвав SETROOTTAG.

Данные в шаблоне могут располагаться двумя способами:

  • Корневой тэг имеет имя, совпадающее с именем схемы
<?xml version="1.0" encoding="Windows-1251"?> 
<Товар>
 <xml2ds>
  • Корневой тэг имеет имя root, его непосредственные потомки имеют имя, совпадающее с именем схемы
<?xml version="1.0" encoding="Windows-1251"?> 
<root>
 <Товар>
  <xml2ds>

При такой структуре можно иметь в одном шаблоне сразу несколько схем с разными именами. Если задано несколько схем с одним именем, они будут обработаны все.

Тэгов xml2ds также может быть несколько - например, они могут описывать разные схемы для разных фильтров. При преобразовании они также будут обработаны все.

Имя целевого тэга

Имя целевого тэга определяет местонахождение тэга, из которого будут браться данные, и задается так

<object name="имя">

Имя тэга может иметь вид:

  • Товар - данные берутся непосредственно из тэга Товар, который является потомком корневого тэга
  •  %child.Товар - данные берутся из тэга, который расположен где-то внутри тэга Товар, на любой глубине