Помощь в написании студенческих работ
Антистрессовый сервис

Разработка шаблона XSL

РефератПомощь в написанииУзнать стоимостьмоей работы

Если текст не помещается в ячейке таблицы, Apache FOP переносит его на новую строчку. В соответствии ГОСТ 2.113 — 75, многострочный текст в некоторых случаях может занимать одну строку таблицы. Для решения данной проблемы в случае с колонкой «Примечание» текст в PartList разбивается на две строки, данные которых помещаются соответственно в атрибуты: PRIMECHANIE1 и PRIMECHANIE2 разработанного XML… Читать ещё >

Разработка шаблона XSL (реферат, курсовая, диплом, контрольная)

При разработке xsl-шаблона применяются расширяемые языки таблицы стилей: XSLT и XSL-FO. Первый применяется для трансформации xml-документа (выборки данных из XML), а второй — для описания представления этих данных. Спецификация, как в бумажном, так и в электронном виде, представлена в виде страниц, каждая из которых имеет штамп. Данный элемент спецификации представлен на первом листе иначе, чем на втором и последующих листах. Основные данные спецификации, не принадлежащие штампу, и располагающиеся в виде таблицы в центральной области страницы, не статичны. То есть, они изменяются при переходе от листа к листу. Данные штампов первой и других страниц, напротив, статичны. Соответственно линии, образующие штамп, также не изменяются.

Для описания представления страниц в языке XML-FO предусмотрен ряд элементов. Одним из таких элементов является fo: root. Этот объект содержит один элемент fo: layout-master-set и один или несколько элементов fo: page-sequence. В объекте fo: page-sequence размещается основное содержимое документа. Элемент fo: layout-master-set содержит шаблоны создаваемых страниц, которые также именуются мастер-страницами [4]. Мастер-страница, обозначаемая fo: simple-page-master, задаёт общий макет страницы, включая отступы, размеры заголовков, основную область страницы и так далее. Элемент fo: simple-page-master имеет атрибуты, содержащие значения размеров: страницы и отступов. Соответствующие атрибуты и их описание, представлены в таблице 3.3.

Таблица 3.3.

Элемент.

Описание.

Page-height.

Высота страницы.

Page-width.

Ширина страницы.

margin-top.

Отступ сверху.

Margin-bottom.

Отступ снизу.

margin-left.

Отступ слева.

margin-right.

Отступ справа.

Спецификация XML-FO предусматривает разбиение страницы на пять областей: центральной, заголовка, футера (нижней области), конечной области (правая часть листа) и начальной области. Рассматриваемы области задаются с помощью дочерних элементов объекта fo: simple-page-master, которые представлены в таблице 3.4.

Таблица 3.4.

Элемент.

Описание области.

region-body.

Центральная.

Region-before.

Заголовок.

region-after.

Футер

region-start.

Начальная.

region-end.

Конечная.

Каждый, из рассматриваемых элементов, кроме region-body, имеет атрибут extent. Для region-before и region-after он определяет высоту области. Для region-start и region-end — ширину. Центральной (основной) области отводится вся страница, кроме отступов [4]. То есть, она занимает пространство других областей. Для неё существуют атрибуты, задающие отступы. Можно задать величины отступов таким образом, чтобы основная область не перекрывала другие. Имена рассматриваемых атрибутов, задающих отступы, соответствуют атрибутам страницы. Они представлены в таблице 3.3. Демонстрационный пример xsl-файла представлен ниже.

xmlns:fo="http://www.w3.org/1999/XSL/Format" >

page-width="297mm" .

margin-top="8mm" .

margin-bottom="5mm" .

margin-left="5mm" .

margin-right="5mm" >

margin-bottom="90mm" .

margin-left="0mm" .

margin-right="0mm" />

Как уже упоминалось ранее, первая страница спецификации, а точнее, её штамп, отличается от штампа, представленного на второй и последующих страницах. Отсюда можно сделать вывод, что представление этих страниц должно быть описано с помощью разных шаблонов. Для этого необходимо каждому макету страницы присвоить имя, а в элементе fo: simple-page-master указать атрибут master-name с именем данного шаблона. Соответствующий объект fo: page-sequence, содержащий описание представления данных на старнице, должен иметь потомка — атрибут master-reference. Описываемый объект должен указывать на имя одной из мастер-страниц в элементе fo: layout-master-set [1]. При использовании нескольких мастер страниц необходима их группировка в элементе fo: page-sequence-master. Рассматриваемый объект является дочерним элементу fo: layout-master-set, в котором с помощью одного или нескольких дочерних элементов задается порядок, в котором будут инициализироваться конкретные мастер-страницы. Таким образом определяется последовательность расположения описанных страниц. Для задания этой последовательности применяется элемент fo: single-page-master-reference с атрибутом master-reference, указывающим на имя одной из мастер-страниц. Пример соответствующего фрагмента файла XSL, приведён ниже.

page-height="310mm" .

page-width="397mm" .

margin-top="8mm" .

margin-bottom="5mm" .

margin-left="5mm" .

margin-right="5mm" >

margin-bottom="90mm" .

margin-left="0mm" .

margin-right="0mm" />

page-height="310mm" .

page-width="397mm" .

margin-top="8mm" .

margin-bottom="5mm" .

margin-left="5mm" .

margin-right="5mm" >

margin-top="37mm" .

margin-bottom="15mm" .

margin-left="0mm" .

margin-right="0mm" />

Данные, относящиеся к штампу, как было сказано ранее, статичны. Для описания статичных областей применяется элемент fo: static-content с атрибутом flow-name, указывающим на регион, для которого инициализирована мастер страница [2]. То есть, объект fo: static-content является потомком элемента fo: page-sequence. Значения атрибута flow-name указаны в таблице 3.5.

Таблица 3.5.

Значения атрибута flow-name.

Описание области.

xsl-region-body.

Центральная.

xsl-region-before.

Заголовок.

xsl-region-after.

Футер

xsl-region-start.

Начальная.

xsl-region-end.

Конечная.

Содержимое же центральной области страницы, напротив, изменяется. Данные, извлечённые с помощью XSLT из xml-документа, «перетекают» с одного листа на другой. То есть fop-процессор, обрабатывая fo-файл, должен помещать данные на основную область страницы до тех пор, пока на ней хватает места. Как только ресурс листа иссякнет, fop-процессор должен создать новый лист и продолжить добавление данных. Этот процесс должен продолжаться до тех пор, пока все данные из fo-файла не будут внесены в файл формата PDF. Соответственно объём данных, расположенных в файле FO, а ранее в файле XML, определит количество страниц в файле PDF. Для реализации поточного метода выборки и представления данных в спецификации языка XSL-FO предусмотрен элемент fo: flow. Рассматриваемый объект хранит реальное содержимое, которое будет размещаться на страницах в соответствии с мастер-страницами. Это содержимое образуется последовательностью элементов: fo: block, fo: block-container, fo: table [1].

Объект fo: block применяется для задания свойств выводимого текста. Свойства задаются с помощью соответствующих атрибутов. С помощью данного элемента задаются видимые или невидимые границы текста. При описании текстовых данных в xsl-шаблоне применение fo: block обязательно. В этом элементе можно не использовать атрибуты форматирования текста, границ блока и так далее. Fop-процессор просто применит значения по умолчанию (черный цвет шрифта, невидимые границы блока и так далее). Возможно также указание атрибуты форматирования текста в некоторых родительских элементах. Атрибуты, используемые при форматировании текста, и их описание представлены в таблице 3.6.

Таблица 3.6.

Атрибут.

Описание.

font-family.

Название шрифта.

font-size.

Размер шрифта.

Text-align.

Положение текста в блоке.

Start-indent.

Отступ слева.

end-indent.

Отступ справа.

Размер шрифта указывается так: font-size="14pt". Атрибут text-align, указывающий положение текста в блоке, может принимать следующие значения: center, left, right. Отступы слева и справа указываются в миллиметрах.

По умолчанию границы блока невидимы, но с помощью специальных атрибутов можно указать fop-процессору, где их необходимо нарисовать. Также можно указать толщину линий, в противном случае она будет принята по умолчанию 3.6 мм. Атрибуты, используемые для задания границ и их толщины, представлены в таблице 3.7.

Таблица 3.7.

Атрибут.

Описание.

border-style.

Границы для всего блока.

Border-before-style / border-top-style.

Граница перед текстом.

border-after-style / border-bottom-style.

Граница после текста.

Border-start-style / border-left-style.

Граница слева.

border-end-style / border-right-style.

Граница справа.

border-width.

Толщина границы для всего блока.

border-before-width / border-top-width.

Толщина границы перед текстом.

Border-after-width / border-bottom-width.

Толщина границы после текста.

Border-start-width / border-left-width.

Толщина границы слева.

Border-end-width / border-right-width.

Толщина границы справа.

Объект fo: block-container предназначен для группировки нескольких блоков, либо для задания некоторых свойств конкретного блока. В рассматриваемой спецификации в некоторых ячейках штампа текст располагается вертикально. Для того, чтобы в шаблоне XSL задать поворот текста на 90 градусов, необходимо воспользоваться атрибутом reference-orientation, принадлежащем элементу fo: block-container. При этом нужно разрешить поворот текста с помощью атрибута position, присвоив ему значение absolute [4]. Для того, чтобы опустить или приподнять текст, используют атрибут top. Если необходимо текст опустить, то указывается положительное значение отступа в миллиметрах, в противном случае — отрицательное.

Объект fo: table применяются для описания таблиц. К его прямым потомкам относятся следующие элементы: fo: table-column, fo: table-body, fo: table-row, fo: table-cell [2].

Элемент fo: table-column задаёт колонку в таблице. Последовательность из пяти таких объектов задаёт пять колонок, соответственно. С помощью атрибута column-number указывается порядковый номер колонки. При помощи column-width — её ширина.

Объект fo: table-body включает в себя узлы, описывающие строки и ячейки таблицы. Он задаёт рабочую зону таблицы. То есть в нём находится фактическое содержимое таблицы. В нём, с помощью соответствующих атрибутов, могут быть указаны свойства текста.

Элемент fo: table-row используется для группировки в строки ячеек таблицы. В нём с помощью атрибута line-height указывается высота строк.

Содержимое каждой ячейки размещается в объекте fo: table-cell. Пример использования элементов, описывающих представление таблиц, приведён ниже.

Инв. № подл.

Подп. и дата.

&…

Если текст не помещается в ячейке таблицы, Apache FOP переносит его на новую строчку. В соответствии ГОСТ 2.113 — 75, многострочный текст в некоторых случаях может занимать одну строку таблицы. Для решения данной проблемы в случае с колонкой «Примечание» текст в PartList разбивается на две строки, данные которых помещаются соответственно в атрибуты: PRIMECHANIE1 и PRIMECHANIE2 разработанного XML документа. При этом уменьшается шрифт и задаются размеры для новых строк, входящих в ячейку. В результате текст располагается в ней в две строки, но принадлежит одной строке таблицы. В противном случае примечание выводится в атрибут PRIMECHANIE. Описанное представление ячейки таблицы приведено ниже.

Разработанный шаблон XSL, описывающий представление групповой спецификации по ГОСТ 2.113 — 75, приведён в приложении A.

Показать весь текст
Заполнить форму текущей работой