<?xml version="1.0" encoding="UTF-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fо: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="page">
<fo:region-body margin-right="0mm" margin-left="0mm"
margin-bottom="10mm" margin-top="0mm"/>
.
.
.
Обратите внимание: документы; XSL-FO являются документами XML, поэтому везде можно использовать стандартные комментарии XML, <!-- такие как этот -->. Отметьте также, что элементы <fo:simple-page-master> и <fo:region-body> обладают такими атрибутами, как margin-right и page-height. В XSL-FO такие атрибуты называются свойствами, и их весьма много — на момент написания книги около 240. Например, вот как можно создать блок XSL-FO — прямоугольную область отображения — в котором выводится текст «Welcome to XSL formatting» (Добро пожаловать в форматирование XSL) шрифтом sans-serif размером 36 пунктов. Я использую форматирующий объект <fo:block> и свойства XSL-FO font-family — line-height (задающее высоту блока) и font-size:
<fo:block font-family="sans-serif" line-height="48pt" font-size="36pt">
Welcome to XSL formatting
</fo:block>
В этом разделе мы рассмотрим объекты XSL-FO, а в следующем — свойства XSL-FO для работы с ними. При помощи объектов и свойств XSL-FO вы можете создавать документы XSL-FO, которым обычно дается расширение .fo. Процессор fop преобразует такие документы в формат .pdf.
Все форматирующие объекты XSL-FO с описанием перечислены на www.w3.org/TR/xsl/slice6.html. Во время создания книги существуют такие объекты (с работой многих из них мы познакомимся в этой и следующей главах):
• <fo:bidi-override>. Перекрывает двунаправленный алгоритм Unicode (этот алгоритм используется в документах на нескольких языках);
• <fo:block>. Создает блок отображения для формирования прямоугольных областей, используемых при выводе абзацев, заголовков, подписей к рисункам и таблицам и т.д.;
• <fo:block-container>. Создает контейнер блоков, который затем можно помещать в любом месте;
• <fo:character>. Представляет единственный символ;
• <fo:color-profile>. Создает цветовой профиль для таблицы стилей, с которым потом можно работать при помощи цветовых функций (подробности см. на www.w3.org/TR/xsl/slice5.html#expr-color-functions);
• <fo:conditional-page-master-reference>. Задает шаблон страницы (page-master), который следует использовать при выполнении указанных условий;
• <fo:declarations>. Создает глобальные объявления;
• <fo:external-graphic>. Добавляет в документ графику (графические данные располагаются за пределами результирующего документа, но могут быть интегрированы в документы PDF такими процессорами, как fop);
• <fo:float>. Указывает, что определенное содержимое будет форматироваться в отдельной, незакрепленной области в начале страницы или сдвинутой к одной из сторон;
• <fo:flow>. Обрабатывает поток текста, отображаемый в документе. Накладывает блокировку на «поток» встроенных областей, когда они заменяются в документе;
• <fo:footnote>. Задает ссылку на сноску, а также саму связанную с ней сноску;
• <fo:footnote-body>. Определяет содержимое сноски;
• <fo:initial-property-set>. Задает форматирующие свойства для начальной строки блока;
• <fo:inline>. Создает встроенную область (inline area). Встроенные области часто применяются для форматирования определенной части текста в блоке;
• <fo:inline-container>. Создает контейнер для встроенных объектов, позволяя обрабатывать их все вместе;
• <fo:instream-foreign-object>. Используется для вставки в документ встроенной графики или другого объекта;
• <fo:layout-master-set>. Задает оболочку для всех шаблонов, используемых в документе;
• <fo:leader>. Создает строку из повторяющегося символа или образец из символов для разделения двух текстовых форматирующих объектов;
• <fo:list-block>. Создает форматированный список, — с ним мы познакомимся в следующей главе;
• <fo:list-item>. Задает метку и тело элемента списка;
• <fo:list-item-body>. Задает содержимое тела элемента списка;
• <fo:list-item-label>. Задает содержимое метки элемента списка;
• <fo:marker>. Применяется вместе с <fo:retrieve-marker> для создания колонтитулов или сносок по ходу работы;
• <fo:multi-case>. Задает объекты, которые показывает или скрывает родительский элемент <fo:multi-switch>;
• <fo:multi-properties>. Позволяет переключаться между двумя или более наборами свойств;
• <fo:multi-property-set>. Задает альтернативный набор свойств;