Чтение онлайн

ЖАНРЫ

Холзнер Стивен

Шрифт:

Последовательности страниц и нумерация страниц

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

Но вам может быть нужно использовать различные шаблоны страницы в разных местах документа. Например, первую страницу нужно отформатировать отлично от следующих. При помощи XSL-FO это можно сделать.

Каждый элемент

<fo:page-sequence>
, который я применял во всех примерах XSL-FO, ссылается
либо на шаблон страницы, либо на элемент
<fo:page-sequence-master>
. При помощи элемента
<fo:page-sequence-master>
вы можете задать различные шаблоны страницы для последовательности страниц.

Пример

pages.fo
продемонстрирует вышесказанное. Я создам для первой страницы один простой шаблон страницы, «first» (первая), в котором текстовая часть смещена вниз страницы, для чего я устанавливаю свойство
margin-top
элемента
<fo:region-body>
в «50mm»:

<?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>

.

.

.

Для всех остальных страниц я создам новый шаблон страницы, «rest» (остальные), в котором текст будет начинаться сверху страницы, для чего я устанавливаю свойство

margin-top
элемента
<fo:region-body>
в «20mm»:

<?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: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"/>

<fo:region-after extent="10mm"/>

<fo:region-before extent="10mm"/>

</fo:simple-page-master>

.

.

.

Чтобы

создать шаблон последовательности страниц, использующий простые шаблоны страниц «first» и «rest», я применяю элемент
<fo:page-sequence-master>
:

<?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: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: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>
определяет, сколько раз полагается повторять последовательность:

Поделиться с друзьями: