</fo:simple-page-master>
<fo:page-sequence-master master-name='sequence'>
.
.
.
</fo:page-sequence-master>
</fo:layout-master-set>
С элементом <fo:page-sequence-master>
вы можете применять следующее свойство:
• master-name
.
Здесь я просто назвал новую последовательность страниц «sequence» (последовательность). Я создаю шаблон последовательности страниц повторяющегося типа, и для задания имен шаблонов страниц в новой последовательности служит элемент <fo:repeatable-page-master- alternatives>
:
<fo:page-sequence-master master-name='sequence'>
<fо:repeatable-page-master-alternatives>
.
.
.
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
Очередное свойство элемента <fo:repeatable-page-master-alternatives>
определяет, сколько раз полагается повторять последовательность:
• maximum-repeats
.
Наконец, надо задать шаблоны страниц, которые будут использованы в шаблоне последовательности, при помощи элемента <fo:conditional-page-master-reference>
. Этот элемент ссылается на шаблон страницы при помощи свойства master-name
, и этот шаблон страницы будет использован при выполнении определенного условия. Чтобы выбрать первую страницу, нужно установить свойство page-position
в «first», а для выбора остальных страниц — в «rest»:
<fo:page-sequence-master master-name='sequence'>
<fo:repeatable-page-master-alternatives>
<fо:conditional-page-master-reference
master-name='first' page-position='first'/>
<fo:conditional-page-master-reference
master-name='rest' page-position='rest'/>
</fо:repeatable-page-master-alternatives>
</fo:page-sequence-master>
С элементом <fo:conditional-page-master-reference>
можно применять следующие свойства:
• master-name
;
• page-position
;
• odd-or-even
;
• blank-or-not-blank
.
Теперь при создании последовательности страниц с помощью элемента <fo:page- sequence>
я указываю, что процессор XSL-FO должен использовать шаблон последовательности, «sequence», который я только что создал, установив атрибут master-name элемента <fo:page- sequence>
:
<fo:page-sequence master-name='sequence'>
.
.
.
номером текущей страницы, так что установить нумерацию страниц не составит труда. Чтобы вывести номер в верхней части каждой страницы, я создаю верхний колонтитул страницы при помощи элемента <fo:static-content>
.
Существует два вида потоковых объектов: <fo:static-content>
и <fo:flow>
. Мы уже видели, как при помощи <fo:flow>
добавляются страницы в поток документа. Элемент <fo:static-content>
используется для добавления в документ верхних и нижних колонтитулов. С <fo:static-content>
можно применять следующее свойство:
• flow-name
.
Для создания колонтитула нужно только поместить элемент <fo:static-content>
перед элементом <fo:flow>
в последовательности страниц:
<fo:page-sequence master-name='sequence'>
<fo:static-content flow-name='xsl-region-before'>
<fo:block text-align='end' font-size='24pt'
font-family='sans-serif' line-height='36pt'>
Sample Document p.
<fo:page-number/>
</fo:block>
</fo:static-content>
<fo:flow flow-name='xsl-region-body'>
.
.
.
УСТАНОВКА НАЧАЛЬНОГО НОМЕРА СТРАНИЦЫ
Для установки начального номера страницы в последовательности служит свойство initial-page- number элемента <fo:page-sequence>, что позволяет вам, например, отдельно форматировать главы, начиная каждую главу с правильного номера страницы.
Наконец, нам осталось только включить в pages.fo
(листинг 12.8) образец форматируемого текста, так чтобы документ содержал более одной страницы.
<?xml version='1.0' encoding='UTF-8'?>
<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>
<fo:layout-master-set>
<fo:simple-page-master margin-right='20mm' margin-left='20mm'
margin-bottom='10mm' margin-top='10mm' page-width='300mm'
page-height='400mm' master-name='first'>
<fo:region-body margin-right='0mm' margin-left='0mm'
margin-bottom='10mm' margin-top='50mm'/>
<fo:region-after extent='10mm'/>
<fo:region-before extent='10mm'/>
</fo:simple-page-master>
<fo:simple-page-master margin-right='25mm' margin-left='25mm'
margin-bottom='15mm' margin-top='15mm' page-width='300mm'
page-height='400mm' master-name='rest'>
<fo:region-body margin-right='0mm' margin-left='0mm'
margin-bottom='10mm' margin-top='20mm'/>