Тело шаблона состоит из произвольной структуры тегов форматирования входных данных и тегов выборки информации из базы данных. Построение выходной информации выполняется путем последовательного обхода тегов, которые составляют шаблон с максимальным погружением в глубину.
Для выборки информации из базы данных используется специальный тег select
. Особенностью данного тега является многократный обход вложенных в него тегов.
На вложенные теги select
распространяются правила выполнения вложенных циклов. Внутренний тег будет выполнен столько раз сколько элементов выборки содержит внешний. С помощью тегов select
организуются циклы и ветвления (выполнение в зависимости от заданного условия). В запросах можно использовать параметры, которые выделяются символами "$".
Некорректный запрос select
приводит к игнорированию обхода вложенных в него тегов. Ошибочный запрос с текстом ошибки записывается в лог программы.
Атрибуты тега select
Наименование | Тип данных | Описание | Примечания |
---|---|---|---|
query | строковый | Запрос к базе данных | Используется синтаксис движка базы данных. Текущая база данных – documents |
<select query="select shiftnum, workshiftid from workshift"> <select query="select * from document where workshiftid = $workshiftid$"> ... </select> </select>
Ниже приведен пример обхода содержимого шаблона. В данном контексте tag
– любой тег форматирования выходных данных. Номерами указан порядок обхода тегов.
<?xml version="1.0" encoding="UTF-8"?> <report name="sale" type="document" cached="true" title="Чек продажи"> <tag order="1"> <tag order="2"> <select query="..."> <!-- Для выборки, которая содержит три элемента, теги 3 и 4 будут разобраны трижды --> <tag order="3"/> <tag order="4"/> </select> </tag> <tag order="5"> </tag> </tag> </report>