<fo:simple-page-master master-name='page'
page-height='400mm' page-width='300mm'
margin-top='10mm' margin-bottom='10mm'
margin-left='20mm' margin-right='20mm'>
<fo:region-body margin-top='0mm' margin-bottom='10mm'
margin-left='0mm' margin-right='0mm'/>
<fo:region-after extent='10mm'/>
</fo:simple-page-master>
</fo:layout-master-set>
.
.
.
Это завершает используемый в документе шаблон, простой шаблон страницы «page», почему здесь также завершается и элемент <fo:layout-master-set>
.
В дополнение к элементу <fo:layout-master-set>
, документ с форматирующими объектами, как правило, также содержит один или несколько элементов <fo:page- sequence>
, задающих последовательности страниц, создаваемых по определенному в <fo:layout-master-set>
шаблону, и я добавил в документ последовательность страниц.
Создание последовательностей страниц: <fo:page-sequence>
Что такое последовательность страниц? Это ряд страниц с одинаковыми характеристиками (например, глава в книге), которые при желании можно форматировать одинаковым способом. Страницы в результирующем документе в действительности создаются тогда, когда процессор XSL-FO обрабатывает элементы <fo:page-sequence>
.
Каждый элемент <fo:page-sequence>
ссылается либо на элемент <fo:page-sequence-master>
, либо на шаблон страницы, и фактическая схема страниц определяется этими шаблонами. Несколько более сложно создание последовательностей, у которых место расположения номера страницы меняется — номеру располагаются на разных сторонах страницы, как при создании страниц книги.
К объекту <fo:page-sequence>
применимы следующие свойства:
• country
;
• format
;
• language
;
• letter-value
;
• grouping-separator
;
• grouping-size
;
• id
;
• initial-page-number
;
• force-page-count
;
• master-name
.
В последней рекомендации XSL W3C шаблон страницы для последовательности страниц задается атрибутом master-name
элемента <fo:page-sequence>
. Я назвал свой простой шаблон страницы «page», и здесь я устанавливаю данный атрибут в это имя:
<?xml version='1.0'?>
<xsl:stylesheet
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
xmlns:fo='http://www.w3.org/1999/XSL/Format'
version='1.0'>
<xsl:template match='PLANETS'>
<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>
<fo:layout-master-set>
<fo:simple-page-master master-name='page'
page-height='400mm' page-width='300mm'
margin-top='10mm' margin-bottom='10mm'
margin-left='20mm' margin-right='20mm'>
<fo:region-body margin-top='0mm' margin-bottom='10mm'
margin-left='0mm' margin-right='0mm'/>
<fo:region-after extent='10mm'/>
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-name='page'>
.
.
.
</fo:page-sequence>
.
.
.
Этот код определяет шаблон страницы, который будет использован для последовательности страниц. Теперь мне нужно задать<fo:page- sequence>
.
Создание объектов потока: <fo:flows>
Объекты потока носят такое название потому, что текст в них «заливается» и выравнивается, заполняя страницу, программой, отвечающей за вывод на экран. Содержимое страницы управляется объектами потока.
Есть два вида объектов потока: <fo:static-content>
и <fo:flow>
. Объект <fo:static-content>
хранит содержимое (например, текст в верхних и нижних колонтитулах), которое будет повторяться на страницах последовательности (как мы увидим в главе 12). Объект <fo:flow>
содержит сам текст, образующий содержимое документа.
К <fo:flow>
применимо следующее свойство:
• flow-name
.
Я воспользуюсь элементом <fo:flow>
для обработки текстового содержимого planets.xml
. Чтобы гарантировать, что текст будет преобразован в поток, я применю элемент <xsl:apply-templates>
:
<?xml version='1.0'?>
<xsl:stylesheet
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
xmlns:fo='http://www.w3.org/1999/XSL/Format'
version='1.0'>