, в средстве просмотра Adobe Acrobat Reader вы увидите, если вернетесь к рис. 11.1.
Теперь вы видели, как выполняется процедура в общем; давайте перейдем к деталям
и посмотрим, как создаются документы XSL-FO. Чтобы подробно все рассмотреть, я собираюсь взять за основу листинг 11.2, таблицу стилей XSLT, создающую
planets.fo
.
СОЗДАНИЕ ДОКУМЕНТОВ XSL-FO С НУЛЯ
Заметьте, что не обязательно создавать таблицу стилей для преобразования документов XSL в форму XSL-FO. Я мог бы написать planets.fo так, как показано в листинге 11.3, с нуля, не прибегая к таблицам стилей XSLT. Но такой способ, как правило, годится только для коротких документов XML. Документы с форматированием XSL-FO становятся весьма длинными очень быстро (сравните длину planets.xml с planets.fo), поэтому для создания документов XSL-FO практически всегда применяйте таблицы стилей XSLT (хотя некоторые примеры в следующей главе достаточно коротки для того, чтобы написать их непосредственно при помощи XSL-FO).
Создание корня документа: <fo:root>
Первый форматирующий документ, который мы рассмотрим, — это
<fo:root>
, узел документа любого документа XSL-FO.
Детьми форматирующего объекта
<fo:root>
являются единственный форматирующий объект
<fo:layout-master-set>
и последовательность из одного или нескольких элементов
<fo:page-sequence>
. Форматирующий объект
<fo:layout-master-set>
содержит все используемые в документе шаблоны, при помощи которых вы управляете созданием каждой страницы. Каждый объект
<fo:page-sequence>
представляет собой последовательность страниц, отформатированных нужных вам способом. Например, каждая глава в книге может быть сформирована из своей собственной последовательности страниц, и каждой последовательности страниц вы можете задать одни и те же верхний и нижний колонтитулы: «Глава 5: Незнакомец появляется снова».
На первом шаге в таблице стилей XSLT, преобразующей
может содержать и схемы шаблонов, и последовательности страниц. Сначала я опишу объект
<fo:layout-master-set>
.
Создание схемы набора шаблонов: <fo:layout-master-set>
Шаблоны (master) могут быть определены
для страниц, последовательностей страниц и областей. Элемент
<fo:layout-master-set>
содержит все используемые в документе шаблоны, включая шаблоны последовательностей (sequence master), страниц (page master) и областей (region master).
Шаблоны страниц формируют отдельные страницы, шаблоны последовательностей страниц — последовательности страниц; шаблоны областей позволяют форматировать определенные области страницы. В следующем примере я создам единственный шаблон при помощи
<fo:simple-page-master>
.
Шаблоны, которые вы хотите применить в документе, должны быть перечислены в элементе
Этот элемент содержит шаблон страницы, как определено в элементе
<fo:simple-page-master>
.
Создание шаблона страницы: <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
. После этого шаблон стал именованным, и когда мне нужно создать страницы по этому шаблону, я обращаюсь к нему по этому имени. Я также задаю размеры и поля страницы при помощи свойств страницы и полей следующим образом: