Выгрузка в XML — различия между версиями
Bars (обсуждение | вклад) (Новая страница: «Категория:XML == Понимание процесса преобразования датасета в XML == Датасет в ГБ представ…») |
Bars (обсуждение | вклад) (→Каждая запись датасета - потомок некорневого тэга) |
||
Строка 72: | Строка 72: | ||
=== Каждая запись датасета - потомок некорневого тэга === | === Каждая запись датасета - потомок некорневого тэга === | ||
+ | |||
+ | В данном случае требуется создать нужную вложенность при помощи тэгов subset, указав в последнем из них fieldname="$$ALL$$" | ||
+ | |||
+ | Шаблон | ||
+ | <?xml version="1.0" encoding="Windows-1251"?> | ||
+ | <Товар> | ||
+ | <ds2xml> | ||
+ | <subset line="Товары"> | ||
+ | <subset line="Данные" fieldname="$$ALL$$"> | ||
+ | <subset line="Товар"> | ||
+ | <attr tagname="Id" value="Id"/> | ||
+ | </subset> | ||
+ | </subset> | ||
+ | </subset> | ||
+ | </ds2xml> | ||
+ | </Товар> | ||
+ | |||
+ | Даст нам в итоге | ||
+ | <?xml version="1.0" encoding="Windows-1251"?> | ||
+ | <root> | ||
+ | <Товары> | ||
+ | <Данные> | ||
+ | <Товар Id="873"/> | ||
+ | <Товар Id="874"/> | ||
+ | </Данные> | ||
+ | </Товары> | ||
+ | </root> |
Версия 11:23, 7 апреля 2010
Содержание
Понимание процесса преобразования датасета в 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
Каждая запись датасета - потомок некорневого тэга
В данном случае требуется создать нужную вложенность при помощи тэгов subset, указав в последнем из них fieldname="$$ALL$$"
Шаблон
<?xml version="1.0" encoding="Windows-1251"?> <Товар> <ds2xml> <subset line="Товары"> <subset line="Данные" fieldname="$$ALL$$"> <subset line="Товар"> <attr tagname="Id" value="Id"/> </subset> </subset> </subset> </ds2xml> </Товар>
Даст нам в итоге
<?xml version="1.0" encoding="Windows-1251"?> <root> <Товары> <Данные> <Товар Id="873"/> <Товар Id="874"/> </Данные> </Товары> </root>