Документація Database Tour Contents Index

Експорт до HTML з використанням шаблона

Top Previous Next

При експорті даних до формату HTML часто потрібно отримати результуючий файл, який можна було б відразу використовувати по призначення без будь-якої подальшої доводки.

Цього можна досягнути використанням файлу шаблона HTML. Файл шаблона є звичайним файлом HTML, але з деякими динамічними структурами, які заповнюються даними або елементами HTML під час процесу експорта. Ці динамічні структури сховані в коментарях HTML, тому файл може коректно відображуватися в веб-переглядачах та редакторах HTML.

Використання шаблона HTML дає наступні переваги:

- можливість отримати цільовий документ HTML, збагачений даними з бази даних, який виглядає в точності так, як потрібно користувачу;

- заповнення цільового документу в кілька кроків, використовуючи різні набори вихідних даних (в т.ч. з різних баз даних);

- можливість агрегації експортованих даних;

- використання виразів, які повертають теги html; це дасть змогу умовно форматувати дані, вставляти коментарі або навіть змінювати структуру документу;

- використання виразів, які продукують нові вирази; ці нові вирази будуть обраховані на наступних кроках експорту.

Увага

1. Кодування файлу шаблону повинно бути ANSI або UTF-8.

2. Якщо процес експорту до HTML використовує шаблон, всі опції експорту будуть ігноруватися, крмі опцій шаблону, заголовку документу, обмеження кількості записів, та діпазону записів.

Динамічні дані в шаблонах HTML базуються на наступних елементах:

1. Pascal-подібні вирази, які обраховуються "на льоту" перед їх виводом в цільовий документ. Ці вирази можуть витягувати дані з бази даних, робити арифметичні, логічні або текстові операції, або отримувати іншу інформацію, яка відома на рівні програми. Результат виразу вставляється в цільовий документ HTML прямо на місці виразу. Вираз також може генерувати нові теги HTML.

2. Теги динамічних картинок. Вони дозволяють витягувати картинки з поточного набору даних і будувати теги <img>. Примітка: якщо вам не потрібно витягувати картинки з бази даних, проте потрібно генерувати теги картинок динамічно, використовуйте вирази замість тегів динамічних картинок.

3. Цикли. Такий цикл виводить всі елементи HTML всередині нього стільки разів, скільки буде ітерацій циклу. Вирази і теги динамічних картинок всередині циклів обраховуються і готуються перед виводом вмісту циклу до цільового документу. Зауваження: вкладені цикли не дозволяються.

Написання динамічних виразів

Динамічний вираз повинен декларуватися як параметр макросу vle_expr, тобто в дужках після ключового слова vle_expr. Вся конструкція, в свою чергу, повинна бути розміщена в коментарі HTML. Коментар HTML не повинен містити жодних інших елементів, крім одного макросу vle_expr. Після розрахунку результат виразу замінює всю динамічну структуру, включно з коментарем. В разі помилки під час розрахунку повідомлення про помилку розміщується в коментарі замість виразу.

Приклад динамічної структури, що використовує вираз:

<!--vle_expr(dataset_field_val(1, 'ProductCode'))-->

Тут dataset_field_val(1, 'ProductCode') є виразом для розрахунку.

Більше інформації про написання виразів можна знайти в розділі Движок виразів.

Підготовка циклів

Динамічна область для початку цикла повинна декларуватися макросом vle_loop_start. Вся конструкція, в свою чергу, повинна бути розміщена в коментарі HTML. Коментар HTML не повинен містити жодних інших елементів, крім одного макросу vle_loop_start.

Макрос vle_loop_start має чотири параметри:

1. Номер кроку експорту (Integer). Процедура експорту буде ігнорувати цикл, в якому номер кроку не співпадає з номером кроку, вказаним в опціях експорту. Див. примітку 6 тут.

2. Тип циклу (String). Можливі значення: 'each_row_in_dataset' (цикл по записах поточного набору даних), 'for' (циклі від індексу, вказаного в другому параметрі макроса, до індексу, вказаного в третьому параметрі макроса).

3. Початковий індекс циклу (Integer). Може бути константою або виразом. Ігнорується, якщо тип циклу 'each_row_in_dataset'.

4. Кінцевий індекс циклу (Integer). Може бути константою або виразом. Ігнорується, якщо тип циклу 'each_row_in_dataset'.

Приклади:

<!--vle_loop_start(1, 'each_row_in_dataset', 0, 0)-->

<!--vle_loop_start(1, 'for', 1, to_number(format_date_time(date, 'dd')))-->

Динамічна область для кінця цикла повинна декларуватися макросом vle_loop_end. Вся конструкція, в свою чергу, повинна бути розміщена в коментарі HTML. Коментар HTML не повинен містити жодних інших елементів, крім одного макросу vle_loop_end.

Макрос vle_loop_end не має параметрів.

Приклад:

<!--vle_loop_end-->

Всі елементи HTML та вирази між макросами vle_loop_start і vle_loop_end готуються та виводяться до цільового документу в кожній ітерації циклу.

Написання тегів динамічних картинок

Динамічна область для створення тега динамічної картинки повинна декларуватися макросом vle_make_img_tag. Вся конструкція, в свою чергу, повинна бути розміщена в коментарі HTML. Коментар HTML не повинен містити жодних інших елементів, крім одного макросу vle_make_img_tag.

Макрос vle_make_img_tag має дев'ять параметрів:

1. Номер кроку експорту (Integer). Процедура експорту буде ігнорувати динамічну область, в якій номер кроку не співпадає з номером кроку, вказаним в опціях експорту. Див. примітку 6 тут.

2. Назва поля (String). Вказує назву поля з поточного набору даних, звідки потрібно витягувати картинки.

3. Цільовий формат картинки (String). Можливі значення: 'png', 'jpg', 'gif', '<autodetect>'. В останньому випадку цільовий формат картинки буде визначений (якщо це можливо) з бази даних. Може бути виразом.

4. Цільова тека для картинок (String). Якщо залишити пустим, картинку буде збережено в теці цільового файлу. Якщо вказати '<auto>', картинку буде збережено в теці з назвою, як у цільового файлу (без розширення) плюс суфікс _files. Може бути виразом.

5. Базова назва для імені файлу (String). Може бути виразом.

6. Назва цільового файлу картинки (String). Це не повинен бути повний шлях. Якщо вказати '<auto>', файл буде іменовано автоматично. Може бути виразом.

7. Вміст атрибуту alt тега img (String). Може бути виразом.

8. Ширина картинки (Integer). Якщо -1, то буде використаний реальний розмір. Може бути виразом.

9. Висота картинки (Integer). Якщо -1, то буде використаний реальний розмір. Може бути виразом.

Див. також

 Движок виразів

 Приклад використання шаблона при експорті до HTML

 Експорт даних