Создание шаблона страницы: <fo:simple-page-master>
Как можно догадаться из названия, шаблон страницы (page master) применяется для создания страницы. Шаблон страницы задает фактическую схему и конфигурацию страницы. Каждому шаблону страницы должно быть задано уникальное имя, к которому и нужно обращаться при работе с шаблоном.
В настоящей спецификации XSL существует единственный вид шаблона страницы, <fo:simple-page-master>, и здесь я буду применять этот элемент для форматирования страниц. С объектом <fo:simple-page-master> можно использовать следующие свойства XSL-FO (их описание приведено в Приложении Б):
• общие свойства полей для блоков: margin-top, margin-bottom, margin-left, margin-right, space-before, space- after, start-indent, end-indent;
• master-name;
• page-height;
• page-width;
• reference-orientation;
• writing-mode.
В таблице стилей XSLT, которую я применил к planets.xml, я задал простому шаблону страницы имя «page» при помощи свойства master-name. После этого шаблон стал именованным, и когда мне нужно создать страницы по этому шаблону, я обращаюсь к нему по этому имени. Я также задаю размеры и поля страницы при помощи свойств страницы и полей следующим образом:
<?xml version='1.0'?>
<xsl:stylesheet
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
xmlns:fo='http://www.w3.org/1999/XSL/Format'
version='1.0'>
<xsl:template match='PLANETS'>
<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>
<fo:layout-master-set>
<fo:simple-page-master master-name='page'
page-height='400mm' page-width='300mm'
margin-top='10mm' margin-bottom='10mm'
margin-left='20mm' margin-right='20mm'>
.
.
.
В дополнение к заданию схемы расположения полей страницы, у <fo:simple-page- master> есть дети, определяющие одну или несколько областей страницы, что позволяет точно настроить схему расположения.
Создание областей
В версии 1.0 спецификации XSL у шаблонов страниц имелось пять областей (region). Центральная область, соответствующая основной части, телу страницы, называется
Этим областям соответствуют следующие элементы XSL-FO:
• <fo:region-before>;
• <fo:region-after>;
• <fo:region-body>;
• <fo:region-start>;
• <fo:region-end>.
С ними можно применять следующие свойства:
• общие свойства границ, заполнения и заднего фона: background-attachment, background-color, background-image, background-repeat, background-position-horizontal, background-position-vertical, border- before-color, border-before-style, border-before-width, border- after-color, border-after-style, border-after-width, border-start- color, border-start-style, border-start-width, border-end- color, border-end-style, border-end-width, border-top- color, border-top-style, border-top-width, border-bottom- color, border-bottom-style, border-bottom-width, border-left- color, border-left-style, border-left-width, border-right- color, border-right-style, border-right-width, padding- before, padding-after, padding-start, padding-end, padding-top, padding-bottom, padding-left, padding- right;
• общие свойства полей для блоков: margin-top, margin-bottom, margin-left, margin-right, space-before, space- after, start-indent, end-indent;
• clip;
• column-count;
• column-gap;
• display-align;
• extent;
• overflow;
• region-name;
• reference-orientation;
• writing-mode.
Области страницы можно настраивать по вашему желанию, как в таблице стилей XSLT, в которой я задал поля для области тела. Четыре внешних области (но не область тела) имеют свойство extent, задающее их размер, которым я здесь воспользуюсь:
<?xml version='1.0'?>
<xsl:stylesheet
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
xmlns:fo='http://www.w3.org/1999/XSL/Format'
version='1.0'>
<xsl:template match='PLANETS'>
<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>
<fo:layout-master-set>
