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

Для выборки информации из базы данных используется специальный тег select. Особенностью данного тега является многократный обход вложенных в него тегов.

Обход выполняется ровно столько раз, сколько строк содержит выборка по запросу.

На вложенные теги select распространяются правила выполнения вложенных циклов. Внутренний тег будет выполнен столько раз сколько элементов выборки содержит внешний. С помощью тегов select организуются циклы и ветвления (выполнение в зависимости от заданного условия). В запросах можно использовать параметры, которые выделяются символами "$".

Некорректный запрос select приводит к игнорированию обхода вложенных в него тегов. Ошибочный запрос с текстом ошибки записывается в лог программы.

Атрибуты тега select

НаименованиеТип данныхОписаниеПримечания
queryстроковыйЗапрос к базе данныхИспользуется синтаксис движка базы данных. Текущая база данных – documents
Пример использования тега select
<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>
  • No labels