Выгрузка в 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>