Создание шаблона страницы: <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>