xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
version="1.0">
page-height="400mm" page-width="300mm"
margin-top="10mm" margin-bottom="10mm"
margin-left="20mm" margin-right="20mm">
margin-left="0mm" margin-right="0mm"/>
.
.
.
Это завершает используемый в документе шаблон, простой шаблон страницы «page», почему здесь также завершается и элемент .
В дополнение к элементу , документ с форматирующими объектами, как правило, также содержит один или несколько элементов , задающих последовательности страниц, создаваемых по определенному в шаблону, и я добавил в документ последовательность страниц.
Создание последовательностей страниц:
Что такое последовательность страниц? Это ряд страниц с одинаковыми характеристиками (например, глава в книге), которые при желании можно форматировать одинаковым способом. Страницы в результирующем документе в действительности создаются тогда, когда процессор XSL-FO обрабатывает элементы .
Каждый элемент ссылается либо на элемент , либо на шаблон страницы, и фактическая схема страниц определяется этими шаблонами. Несколько более сложно создание последовательностей, у которых место расположения номера страницы меняется — номеру располагаются на разных сторонах страницы, как при создании страниц книги.
К объекту применимы следующие свойства:
• country;
• format;
• language;
• letter-value;
• grouping-separator;
• grouping-size;
• id;
• initial-page-number;
• force-page-count;
• master-name.
В последней рекомендации XSL W3C шаблон страницы для последовательности страниц задается атрибутом master-nameэлемента . Я назвал свой простой шаблон страницы «page», и здесь я устанавливаю данный атрибут в это имя:
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
version="1.0">
page-height="400mm" page-width="300mm"
margin-top="10mm" margin-bottom="10mm"
margin-left="20mm" margin-right="20mm">
margin-left="0mm" margin-right="0mm"/>
.
.
.
.
.
.
Этот код определяет шаблон страницы, который будет использован для последовательности страниц. Теперь мне нужно задать содержимое (content) последовательности, что делается при помощи детей потока (flow) элемента .
Создание объектов потока:
Объекты потока носят такое название потому, что текст в них «заливается» и выравнивается, заполняя страницу, программой, отвечающей за вывод на экран. Содержимое страницы управляется объектами потока.
Есть два вида объектов потока: и . Объект хранит содержимое (например, текст в верхних и нижних колонтитулах), которое будет повторяться на страницах последовательности (как мы увидим в главе 12). Объект содержит сам текст, образующий содержимое документа.
К применимо следующее свойство:
• flow-name.
Я воспользуюсь элементом для обработки текстового содержимого planets.xml. Чтобы гарантировать, что текст будет преобразован в поток, я применю элемент :
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format"
version="1.0">
.
.
.
.
.
.
Здесь мы заканчиваем рассмотрение элемента ; я указал шаблон для этой последовательности, который предоставит процессору XSL-FO способ форматирования содержимого в страницах форматированного документа. После описания схемы страниц, которые я хочу создать, теперь, наконец, пора перейти к их содержимому. Первый элемент, отображающий содержимое, — .
Создание содержимого уровня блока:
Блоки играют важную роль в XSL-FO: они применяются для создания прямоугольных областей вывода, отделенных от других областей вывода в документе. Форматирующий объект применяется для форматирования таких элементов, как абзацы, заголовки, подписи к рисункам и таблицам и т.д. Вот пример из начала главы, где я создаю элемент блока и задаю различные свойства и текст в блоке:
Welcome to XSL formatting.
С объектом можно применять следующие свойства:
• общие свойства доступа: source-document, role;
• общие звуковые свойства: azimuth, cue-after, cue-before, elevation, pause-after, pause-before, pitch, pitch-range, play-during, richness, speak, speak-header, speak-numeral, speak-punctuation, speech-rate, stress, voice-family, volume;
Читать дальше