Шаблоны документов

Материал из ISPWiki
Перейти к: навигация, поиск


Принцип работы

При печати документов (договоры, акты, счета и т.д.) генерируется XML-файл, содержащий все необходимые для отображения сведения.

Затем на основании сформированного XML-файла и шаблона документа формируется готовый документ для печати. Шаблоны документов могут быть реализованы с помощью одной из двух технологий: EJS или XSLT.

Шаблон считается XSLT-шаблоном, если в нем присутствует строка, начинающаяся с тега <xsl:stylesheet, иначе шаблон считается EJS-шаблоном.

Начиная с версии 5.90.0, Billmanager поставляется с шаблонами обоих типов: EJS и XSLT. По умолчанию создаются только EJS-шаблоны, но XSLT-шаблоны доступны при использовании функций "Сбросить" и "Создать".

Ограничения при совместном использовании XSLT и EJS шаблонов

  • Печать нескольких документов выдаст ошибку, если среди них есть EJS и XSLT.
  • Если шаблон договора EJS и хотя бы одно приложение имеет формат XSLT - появится ошибка при печати.
  • Если шаблон договора XSLT и хотя бы одно приложение имеет формат EJS - появится ошибка при печати.

EJS-шаблоны

Сгенерированный XML-файл конвертируется в JSON-файл. Посмотреть содержимое этого файла можно с помощью параметра out=doc_json. Например, при печати договора адресная строка браузера будет выглядеть так: https://my.example.com/billmgr?func=contract.print&elid=4&plid=&out=doc_print, если заменить doc_print на doc_json, то отобразится JSON-файл, с которым работают EJS-шаблоны.

Все шаблоны, используемые при печати конкретного документа, сохраняются в отдельных файлах во временном каталоге tmp/doctmpl_XXXXXX.

В базовом шаблоне печати макрос %TEMPLATES% заменяется на директивы включения остальных шаблонов в нужном порядке.

Запускается скрипт etc/scripts/doctmpl.js, работающий на платформе node.js:

/usr/bin/node --harmony /usr/local/mgr5/etc/scripts/doctmpl.js

Получившаяся в результате работы скрипта HTML-страница отдается браузеру.

XSLT-шаблоны

XSLT-шаблон работает с исходным XML-файлом. Содержимое этого файла можно посмотреть с помощью параметра out=xml Например, при печати договора адресная строка браузера будет выглядеть так: https://my.example.com/billmgr?func=contract.print&elid=4&plid=&out=doc_print, если заменить doc_print на xml, то отобразится XML-файл, с которым работают XSLT-шаблоны.

Ключевое значение в XSLT-шаблоне имеет узел <xsl:template match="maintemplate">. maintemplate в процессе обработки заменяется на нужное значение, в результате чего шаблон применяется для правильного узла из XML-файла.

Все XSLT-шаблоны, используемые при печати конкретного документа, собираются в один XSLT-документ.

Этот XSLT-документ применяется к XML-файлу, в результате чего формируется HTML-страница, отображаемая браузером.

XSLT-шаблоны документов добавлены в поставку как пример, техническая поддержка по их правкам не оказывается.