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

на главную - закладки

Жанры

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

Шрифт:

Для преобразования

planets.fo
в
planets.pdf
служит класс fop
org.apache.fop.apps.CommandLine
, которому в командной строке нужно передать имя входного документа,
planets.fo
, и имя выходного,
planets.pdf
:

C:\>java org.apache.fop.apps.CommandLine planets.fo planets.pdf

Вот и все; окончательный результат,

planets.pdf
, в средстве просмотра 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, преобразующей

planets.xml
, я выбираю узел документа
<PLANETS>
и заменяю его на элемент
<fo:root>
, объявляющий префикс пространства имен «
fo
»:

<?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:root>
может содержать и схемы шаблонов, и последовательности страниц. Сначала я опишу объект
<fo:layout-master-set>
.

Создание схемы набора шаблонов: <fo:layout-master-set>

Шаблоны (master) могут быть определены для страниц, последовательностей страниц и областей. Элемент

<fo:layout-master-set>
содержит все используемые в документе шаблоны, включая шаблоны последовательностей (sequence master), страниц (page master) и областей (region master).

Шаблоны страниц формируют отдельные страницы, шаблоны последовательностей страниц — последовательности страниц; шаблоны областей позволяют форматировать определенные области страницы. В следующем примере я создам единственный шаблон при помощи

<fo:simple-page-master>
.

Шаблоны, которые вы хотите применить в документе, должны быть перечислены в элементе

<fo:layout-master-set>
, поэтому теперь я добавляю его в
planets.xsl
:

<?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:layout-master-set>

.

.

.

Этот элемент содержит шаблон страницы, как определено в элементе

<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
. После этого шаблон стал именованным, и когда мне нужно создать страницы по этому шаблону, я обращаюсь к нему по этому имени. Я также задаю размеры и поля страницы при помощи свойств страницы и полей следующим образом:

Поделиться:
Популярные книги

Мастер решений

Земляной Андрей Борисович
3. Специалист по выживанию
Фантастика:
боевая фантастика
космическая фантастика
6.20
рейтинг книги
Мастер решений

Газлайтер. Том 25

Володин Григорий Григорьевич
25. История Телепата
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Газлайтер. Том 25

Черный маг императора

Герда Александр
1. Черный маг императора
Фантастика:
юмористическая фантастика
попаданцы
аниме
5.00
рейтинг книги
Черный маг императора

Черный Маг Императора 10

Герда Александр
10. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Черный Маг Императора 10

Последний Паладин. Том 4

Саваровский Роман
4. Путь Паладина
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Последний Паладин. Том 4

Князь Целитель 5

Ткачев Андрей Юрьевич
5. Князь Целитель
Фантастика:
боевая фантастика
городское фэнтези
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Князь Целитель 5

Бастард Императора. Том 12

Орлов Андрей Юрьевич
12. Бастард Императора
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Бастард Императора. Том 12

Вечный. Книга IV

Рокотов Алексей
4. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга IV

Князь Андер Арес 2

Грехов Тимофей
2. Андер Арес
Фантастика:
рпг
аниме
фэнтези
фантастика: прочее
5.25
рейтинг книги
Князь Андер Арес 2

Проходные дворы

Хруцкий Эдуард Анатольевич
Документальная литература:
прочая документальная литература
6.25
рейтинг книги
Проходные дворы

Заповедник гоблинов (сборник)

Саймак Клиффорд Дональд
Фантастика:
научная фантастика
5.00
рейтинг книги
Заповедник гоблинов (сборник)

Телохранитель Генсека. Том 4

Алмазный Петр
4. Медведев
Фантастика:
попаданцы
альтернативная история
6.00
рейтинг книги
Телохранитель Генсека. Том 4

Хроники Тириса. Книга 1

Маханенко Василий Михайлович
1. Хроники Тириса
Фантастика:
боевая фантастика
космическая фантастика
фантастика: прочее
6.00
рейтинг книги
Хроники Тириса. Книга 1

Евреи России. Времена и события. История евреев Российской империи

Кандель Феликс Соломонович
Научно-образовательная:
история
5.00
рейтинг книги
Евреи России. Времена и события. История евреев Российской империи