XSLT
Шрифт:
Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.
Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.
Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.
</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
Теперь все готово. Первая страница, созданная
pages.fo
, показана на рис. 12.8;
Рис. 12.8. Первая страница, отформатированная при помощи XSL-FO
Текст на второй странице начинается сверху, как видно на рис. 12.9.
Рис 12.9. Вторая страница, отформатированная при помощи XSL-FO
Как можно заметить из листинга 12.8, я включил в
pages.fo
большое число строк, не содержащих ничего, кроме слов «Sample Text.», для того чтобы гарантированно получить многостраничный документ. Но для перехода на новую страницу не обязательно располагать большим количеством текста: можно также установить свойство break-after
элемента <fo:block>
в «page», и процессор XSL-FO перейдет на новую страницу после текущего блока: <fo:flow flow-name="xsl-region-body">
<fo:block font-size="36pt" font-family="Times"
text-align="center" space-after="24pt">
Sample Document
</fo:block>
<fo:block font-size="24pt" font-family="sans-serif"
color="gray" break-after="page">
Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.
Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.
Sample Text. Sample Text.
</fo:block>
<fo:block font-size="24pt" font-family="sans-serif"
color="gray">
Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.
Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.
Sample Text. Sample Text.
</fo:block>
</fo:flow>
Вот и все. Теперь процессор XSL-FO перейдет на следующую страницу после блока. Для создания разрывов можно использовать следующие свойства и настройки:
•
break-after
. Указывает, что последняя область, созданная при обработке данного форматирующего объекта, будет последней помещенной в определенный контекст. Устанавливается в auto | column | page | even-page | odd-page | inherit
; •
break-before
. Указывает, что первая созданная область должна быть первой, помещенной в определенный контекст. Устанавливается в auto | column | page | even-page | odd-page | inherit
. Рассмотрим
еще один пример применения последовательностей страниц. Если вы посмотрите на книги, напечатанные на таких западных языках, как английский, немецкий или французский, вы заметите, что страницы с четными номерами, как правило, расположены слева, а страницы с нечетными номерами — справа. Четные и нечетные страницы можно отформатировать по-разному: например, можно задать дополнительное пространство поля у переплета, что даст дополнительное пространство левого поля для нечетных страниц и дополнительное пространство правого поля для четных.Чтобы реализовать такое форматирование, можно применить атрибут
odd-or-even
элемента <fo:conditional-page-master-reference>
, устанавливая его в значение «even» или «odd», выбирая соответственно четные или нечетные страницы: <?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="50mm" margin-left="20mm"
margin-bottom="10mm" margin-top="10mm" page-width="300mm"
page-height="400mm" master-name="leftpage">
<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="20mm" margin-left="50mm"
margin-bottom="10mm" margin-top="10mm" page-width="300mm"
page-height="400mm" master-name="rightpage">
<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>
<fo:page-sequence-master master-name="alternatingpages">
<fо:repeatable-page-master-alternatives>
<fo:conditional-page-master-reference
master-name="rightpage" odd-or-even="odd"/>
<fo:conditional-page-master-reference
master-name="leftpage" odd-or-even="even"/>
</fo:repeatable-page-master-alternatives>
</fo:page-sequence-master>
</fo:layout-master-set>
<fo:page-sequence master-name="alternatingpages">
Поделиться с друзьями: