Выгрузка в XML

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

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

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

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

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

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

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

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

Если нужно, чтобы кодировка полученного файла отличалась от используемой в шаблоне, нужно явно указать ее при помощи тэга output. Также при помощи этого тэга можно подключить к результату файл стилей

<?xml version="1.0" encoding="Windows-1251"?> 
<root>
 <output encoding="utf-8" xsl="/img/invoice.xsl">

Имя объекта

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

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

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

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

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

Например, по такому шаблону по имени объекта "Товар" для каждой записи датасета будет создано 4 тэга в XML

<?xml version="1.0" encoding="Windows-1251"?> 
<root>
<Товар>
 <ds2xml line="aaa">  <attr tagname="Id" value="Id"/>  </ds2xml>
 <ds2xml line="bbb">  <attr tagname="Id" value="Id"/>  </ds2xml>
</Товар>
<Товар>
 <ds2xml line="ccc">  <attr tagname="Id" value="Id"/>  </ds2xml>
 <ds2xml line="ddd">  <attr tagname="Id" value="Id"/>  </ds2xml>
</Товар>
</root>


Уровни данных

Каждая запись датасета - потомок корневого тэга

Самый простой вариант.

<?xml version="1.0" encoding="Windows-1251"?> 
<Товар>
 <ds2xml line="Товар">
  <attr tagname="Id" value="Id"/>
 </ds2xml>
</Товар>

Будет получен XML такого вида:

<?xml version="1.0" encoding="Windows-1251"?>
<root>
<Товар Id="873"/>
<Товар Id="874"/>
</root>

Название корневого тэга можно изменить, вызвав перед DS2XML функцию SETROOTTAG

Каждая запись датасета - потомок некорневого тэга