XSLT — страница 99 из 124

Шаблоны страниц формируют отдельные страницы, шаблоны последовательностей страниц — последовательности страниц; шаблоны областей позволяют форматировать определенные области страницы. В следующем примере я создам единственный шаблон при помощи

.

Шаблоны, которые вы хотите применить в документе, должны быть перечислены в элементе

, поэтому теперь я добавляю его в
planets.xsl
:

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

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

 version="1.0">

    .

    .

    .

   .

   .

   .

Этот элемент содержит шаблон страницы, как определено в элементе

.

Создание шаблона страницы:

Как можно догадаться из названия, шаблон страницы (page master) применяется для создания страницы. Шаблон страницы задает фактическую схему и конфигурацию страницы. Каждому шаблону страницы должно быть задано уникальное имя, к которому и нужно обращаться при работе с шаблоном.

В настоящей спецификации XSL существует единственный вид шаблона страницы,

, и здесь я буду применять этот элемент для форматирования страниц. С объектом <
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
. После этого шаблон стал именованным, и когда мне нужно создать страницы по этому шаблону, я обращаюсь к нему по этому имени. Я также задаю размеры и поля страницы при помощи свойств страницы и полей следующим образом:

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

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

 version="1.0">

    page-height="400mm" page-width="300mm"

    margin-top="10mm" margin-bottom="10mm"

    margin-left="20mm" margin-right="20mm">

    .

    .

    .

В дополнение к заданию схемы расположения полей страницы, у

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

Создание областей

В версии 1.0 спецификации XSL у шаблонов страниц имелось пять областей (region). Центральная область, соответствующая основной части, телу страницы, называется областью тела (body region). Верхняя часть страницы, верхний колонтитул (header), называется передней областью (before region); нижняя часть страницы, нижний колонтитул (footer), называется задней областью (after region). В языках, которые читаются слева направо, как английский язык, левая часть страницы называется начальной областью (start region), а правая часть называется конечной областью (end region). В языках, которые читаются справа налево, начальная и конечная области меняются местами. Начальная и конечная области аналогичны боковым полям, расположенным по бокам области тела.

Этим областям соответствуют следующие элементы XSL-FO:

• 

;

• 

;

• 

;

• 

;

• 

.

С ними можно применять следующие свойства:

• общие свойства границ, заполнения и заднего фона:

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
, задающее их размер, которым я здесь воспользуюсь:

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

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

 version="1.0">

    page-height="400mm" page-width="300mm"

    margin-top="10mm" margin-bottom="10mm"

    margin-left="20mm" margin-right="20mm"