Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
konkurs-samples / hadzkou / Отчет_проект.doc
Скачиваний:
15
Добавлен:
25.03.2015
Размер:
1.84 Mб
Скачать
      1. СозданиеXsl-fo темплейтов

Аналогичным образом происходит процесс создания обработчиков на языке трансформации XSL-FO, который отвечает за отображение преобразованных исходных данных в форматахPDFиRTF. Пользователь получает возможность при просмотреHTML-страницы в веб-браузере скачать изучаемый документ в одном из предложенных форматов.

Всего в системе используется порядка 20 XSL-FO-файлов, отвечающих за различные аспекты функционирования системы в режимахRTFиPDF, начиная от обработки небольших структурных элементов исходного документа, заканчивая реализацией общего представления документа для его последующей отправки посредством электронной почты. Стартовой точкой системы является файлdocument-fo-skeleton.xsl(рисунок 21). Он содержит точку входа в исходный документ (<xsl:template match="/">).

Рисунок 21 – Структура файла document-xhtml-renderer-scion-view.xsl

В случае вызова данного темплейта происходит построение HTML-страницы, вызов других темплейтов для дальнейшей обработки исходного документа, подключение файлов с кодомJavaScript, подключениеCSS-файла, формирование тела страницы и ее блочной структуры.

Следующим вызывается файла print-xhtml-specific.xsl, который включает в себя другие необходимые темплейты и подключает обработчики из других файлов проекта:

<xsl:include href="document-xhtml-list-renderer.xsl"/>

<xsl:include href="document-xhtml-commons.xsl"/>

<xsl:include href="doc-heading.xsl"/>

<xsl:include href="value-add-html.xsl"/>

<xsl:include href="document-xhtml-renderer.xsl"/>

<xsl:include href="xhtml-page-start-element.xsl"/>

<xsl:include href="xhtml-footer.xsl"/>

<xsl:include href="xhtml-print-header.xsl"/>

<xsl:include href="xhtml-print-document-body-structure.xsl"/>

<xsl:include href="doc-notes-html.xsl" />

<xsl:include href="all-formats.xsl"/>

<xsl:include href="break-html.xsl"/>

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

Возвращаемся к документу doc-view-specific.xsl.Здесь находится один из наиболее важным участком обработчика, а именно, темплейт, отвечающий за создание структуры документа для различных типов юридических данных. В темплейте «atlas-document-body-structure» в зависимости от переменной, в которой содержатся данные об идентификации типа юридической информации, строится своя индивидуальная структураHTML-страницы и в дальнейшем вызываются специфические обработчики (рисунок 22).

Посредством вызова инструкции <xsl:apply-templates/>происходит обращение ко всем другим обработчикам, которые найдут в исходном документе элементы, подходящие под их условия. Использование инструкции<xsl:call-template/>приводит к вызову специального темплейта с изначально заданным именем.

Можно сделать вывод о том, что принцип построения обработчика в обоих языках (XSLTиXSL-FO) имеет много общих черт, что ускоряет процесс разработки приложения после создания первой части.

Существенным отличием между этими языками трансформации является то, что в XSLTсуществует возможность подключить внешнийCSS-файл с настройками форматирования генерируемыхHTML-документов. Очевидно, что при созданииPDFиRTFдокументов такая функция нереализуема, что вынуждает разработчика напрямую задавать параметры форматирования выходных данных в самих темплейтах при помощи атрибутов элементов, идентичных тем, что используются вCSS.

Рисунок 22 – Структура темплейта «atlas-document-body-structure»

Ввиду описанной выше особенности языка XSL-FO, построение заголовком происходит несколько иным образом. Все параметры блочных (fo:block) и инлайновых (fo:inline) элементов задаются в самих файлахXSL-FO, как показано на рисунке 23.

Подобным образом устроена работа и других обработчиков, например, отвечающего за преобразование элементов wkdoc:levelи их вывод в форматахPDFиRTF(рисунок 24).

Рисунок 23 – Создание секции заголовка

Рисунок 24 – Структура темплейта «wkdoc:level»

Следующий темплейт иллюстрирует процесс создания информационного меню для документов типа Newsletter(рисунок 25). Данный обработчик находится в файлеdoc-heading-fop.xsl.

Рисунок 25 – Структура темплейта «newsMetadata»

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

На рисунке 26 показано, как происходит обработка и создание заголовков различных уровней для элементов h1, находящихся в исходных данных, которые относятся к типу документов «Legislation» (doc-law).

Рисунок 26 – Обработка элементов h1 из документов типаLegislation

Еще одним часто встречающимся элементом является «para». Его обработка происходит в файлеparagraph-fo.xsl(рисунок 27).

Рисунок 27– Обработка элементовpara

Соседние файлы в папке hadzkou