Объекты Форматирования-1
6 Объекты Форматирования
6.1 Введение
Очищенное дерево ОФ описывает одно или более предполагаемых представлений информации внутри этого дерева. Форматирование это процесс конвертации описания в представление. См. [3 Форматирование. Введение.]. Представление изображается абстрактно деревом областей, как определено в модели областей (см. [4 Модель Области]). Каждое возможное представление представлено (опять...) одним или более деревьев областей, в котором(-ых) информация в очищенном дереве ОФ позиционирована в двух с половиной мерной плоскости/two and one-half dimensional surface.
Есть три вида ОФ: (1) те, которые генерируют области, (2) те, которые возвращают области, но не генерируют их, и (3) те, которые используются при генерации областей. Первый и второй виды обычно называются объекты потока/flow objects. Третий вид это либо объект структуры/layout object, либо вспомогательный объект/auxiliary object. Вид ОФ обозначен в терминах объекта. ОФ первого вида "генерируют одну или более областей". ОФ второго вида "возвращают одну или более областей". ОФ первого вида могут и возвращать, и генерировать области. ОФ третьего вида "используются при генерации областей": то есть они работают как параметры процесса генерации.
6.1.1 Определения, Общие для Многих ОФ
Эта категоризация ведёт к определению двух уточнений, характеризующих соотношение между областью и генерирующим и возвращающим её ОФ. Это уточнения generated-by и returned-by.
Значением уточнения generated-by является одиночный ОФ. ОФ F определён генерировать область A, если семантика F специфицирует генерацию одной или более области и A это одна из этих генерируемых областей или является замещаемой формой одной из этих генерируемых областей, как специфицировано в разделе [4.7.2 Конструирование Строк].
В случае с замещаемыми глиф-областями предполагается, что ОФ генерирует глиф-область, которая появляется первой в последовательности замещаемых глиф-областей. В случае со вставляемой глиф-областью (например, автоматически генерируемый дефис переноса) предполагается, что ОФ генерирует последнюю глиф-область, предшествующую вставляемой глиф-области в предупорядоченном пересечении/pre-order traversal дерева областей.
Значением уточнения returned-by является набор из пар значений, где каждая пара состоит из ОФ и позитивного целого числа. Целое число представляет позицию области относительно порядка расположения всех областей, возвращаемых объектом форматирования.
ОФ F возвращает последовательность областей A, B, C, ... , если пара (F,1) является членом уточнения returned-by в A, пара (F,2) является членом уточнения returned-by в B, пара (F,3) является членом уточнения returned-by в C, ...
Если область является членом последовательности областей, возвращаемых объектом форматирования, то она либо была сгенерирована ОФ, либо была членом последовательности областей, возвращённой потомком этого ОФ. Не все области, возвращаемые потомком ОФ, должны возвращаться данным ОФ. ОФ может генерировать как саму область, так и области-потомки, области, возвращаемые потомком данного ОФ. Эти потомки (в дереве областей) сгенерированной области не возвращаются объектом форматирования, которому они были возвращены.
Набор узлов дерева является lineage/разбитым построчно, если:
-
в наборе имеется такой узел N, что все узлы набора являются предками N, и
-
для каждого узла N набора, если набор содержит предка N, узел также содержит родителя N.
Набор объектов форматирования, которыми была возвращена область, является lineage/разбитым построчно.
Области, возвращаемые объектом форматирования, могут быть normal/нормальными или out-of-line/внестрочными. Нормальные области представляют области "нормального потока текста"; то есть они становятся областями-потомками областей, сгенерированных ОФ, которому они возвращаются. Нормальные области имеют построчную разбивку returned-by размера 1. Существует только один тип нормальной области.
Области out-of-line это области, используемые вне нормального потока текста, или потому что они являются позиционированными абсолютно, или потому что являются частью поплавка или сноски. Области out-of-line могут иметь построчное выравнивание returned-by большего размера, чем 1.
Уточнение area-class/класс-области указывает, к какому классу - normal или out-of-line - принадлежит область. Для областей out-of-line оно обозначает также подкласс области out-of-line. Значениями этого уточнения могут быть: "xsl-normal", "xsl-absolute", "xsl-footnote", "xsl-side-float" или "xsl-before-float". Область является normal/нормальной, если, и только если, уточнение area-class имеет значение "xsl-normal"; в других случаях область является областью out-of-line. (См. раздел [4.2.5 Ограничения Стэкирования].)
Области, возвращаемые/returned-by данным ОФ, упорядочиваются так, как описано выше. Это упорядочивание определяет порядок субпоследовательности областей данного area-class, таких как субпоследовательность нормальных областей. Область A предшествует области B в субпоследовательности, если, и только если, область A предшествует области B среди областей, возвращаемых/returned-by объектами форматирования.
Цепь областей-ссылок/reference-area chain определена как последовательность областей-ссылок, сгенерированных одним ОФ, не являющимся ОФ последовательности страниц/page-sequence, или как состоящая из региона областей-ссылок или областей-ссылок-нормального-потока/normal-flow-reference-areas (см. [6.4.13 fo:region-body]), генерируемого с использованием ОФ региона, назначенных тому же самому потоку (см. [6.4.1.4 Потоки и Отображение Потоков]). Области-ссылки последовательности называются "содержащимися" в цепи областей-ссылок и имеют в последовательности тот же порядок расположения одна относительно другой, который они имеют в дереве областей, используя предупорядоченное пересечение дерева областей.
6.2 Содержимое Объекта Форматирования (Форматирующего Объекта)
Содержимое ОФ описано с использованием синтаксиса модели содержимого XML. В некоторых случаях дополнительные ограничения, не выражаемые в моделях содержимого XML, даются текстуально.
Экземпляр параметра "%block;" в моделях содержимого содержит следующие ОФ: block
block-container
table-and-caption
table
list-block
Экземпляр параметра "%inline;" в моделях содержимого содержит следующие ОФ: bidi-override
character
external-graphic
instream-foreign-object
inline
inline-container
leader
page-number
page-number-citation
basic-link
multi-toggle
Следующие ОФ являются "нейтральными" контейнерами и могут использоваться, в предположении, что выдерживаются дополнительные ограничения, перечисленные в каждом ОФ, в любом месте, где допускаются #PCDATA, %block; или %inline;: multi-switch
multi-properties
wrapper
retrieve-marker
Следующие ОФ "out-of-line" могут использоваться в любом месте, где допускаются #PCDATA, %block; или %inline; (но только не как потомки любых ОФ "out-of-line"): float
Следующие ОФ "out-of-line" могут использоваться в любом месте, где допускаются #PCDATA или %inline; (но только не как потомки любых ОФ "out-of-line"): footnote
6.3 Объекты Форматирования. Резюме.
- basic-link
-
fo:basic-link используется для представления стартового ресурса простой ссылки.
- bidi-override
-
Инлайн-ОФ fo:bidi-override используется там, где необходимо обойти направление по умолчанию алгоритма Unicode-bidirectional для различных (или вложенных) инлайн-скриптов в документах смешанных языков.
- block
-
ОФ fo:block обычно используется при форматировании параграфов, заголовков, названий рисунков и таблиц и т.п.
- block-container
-
Объект потока fo:block-container используется для генерации области-ссылки уровня блока.
- character
-
Объект потока fo:character представляет символ, отображаемый в глиф для презентации.
- color-profile
-
Используется для объявления профиля цвета для таблицы стилей.
- conditional-page-master-reference
-
ОФ fo:conditional-page-master-reference используется для идентификации мастер-страницы/page-master, используемой тогда, когда соблюдены условия её использования.
- declarations
-
Используется для глобальных объявлений в таблице стилей.
- external-graphic
-
Объект потока fo:external-graphic используется для графики в тех случаях, когда графические данные находятся вне результирующего дерева XML в пространстве имён fo.
- float
-
ОФ fo:float используется для решения двух задач. В процессе нормального размещения содержимого некоторое соотнесённое содержимое форматируется в отдельную область в начале страницы (или на какой-нибудь из последующих страниц), где его можно будет прочитать без назойливого навязывания читающему. Альтернативно он может использоваться в тех случаях, когда предполагается всплывание области к одной из сторон, а нормального содержимого - сбоку.
- flow
-
Содержимое ОФ fo:flow это последовательность всплывающих объектов (поплавков), представляющая всплывающее текстовое содержимое, распределённое по страницам.
- footnote
-
fo:footnote используется для производства цитирования и сносок.
- footnote-body
-
fo:footnote-body используется для генерации содержимого сноски.
- initial-property-set
-
fo:initial-property-set специфицирует свойства форматирования для первой строки в fo:block.
- inline
-
ОФ fo:inline обычно используется для форматирования участка текста с фоном или в рамке.
- inline-container
-
Поплавок fo:inline-container используется для генерации ссылочной инлайн-области.
- instream-foreign-object
-
Объект-поплавок fo:instream-foreign-object используется для инлайн-графики или другого "общего/generic" объекта, где данные объекта расположены как потомки fo:instream-foreign-object.
- layout-master-set
-
fo:layout-master-set это оболочка для всех мастеров, используемых в документе.
- leader
-
ОФ fo:leader используется для генерации заполнителей/leaders, состоящих из линейки или ряда повторяющихся символов или циклически повторяющегося патэрна символов, которые могут использоваться для соединения двух текстовых ОФ.
- list-block
-
Поплавок fo:list-block используется при форматировании списка.
- list-item
-
ОФ fo:list-item содержит лэйбл и тело элемента списка.
- list-item-body
-
ОФ fo:list-item-body - это содержимое тела list-item.
- list-item-label
-
ОФ fo:list-item-label - это содержимое лэйбла для list-item; обычно используется для нумерации, идентификации или украшения тела list-item.
- marker
-
fo:marker используется в сочетании с fo:retrieve-marker для создания фиксированных "шапок" и футеров.
- multi-case
-
fo:multi-case используется как контейнер (внутри fo:multi-switch) каждого альтернативного поддерева объектов форматирования, из которых родительский fo:multi-switch выберет один для показа и скроет все остальные.
- multi-properties
-
fo:multi-properties используется для переключения между двумя или более наборами свойств, ассоциированными с данной частью содержимого.
- multi-property-set
-
fo:multi-property-set используется для специфицирования альтернативного набора свойств форматирования, которые, в зависимости от статуса пользовательского агента (ПА), применяются к содержимому.
- multi-switch
-
fo:multi-switch служит оболочкой спецификации альтернативных поддеревьев ОФ (каждое из поддеревьев - внутри fo:multi-case) и управляет переключением альтернатив (активируемым посредством fo:multi-toggle).
- multi-toggle
-
fo:multi-toggle используется внутри fo:multi-case для переключения на другой fo:multi-case.
- page-number
-
ОФ fo:page-number используется для представления номера текущей страницы.
- page-number-citation
-
fo:page-number-citation используется для ссылки на номер страницы для страницы, содержащей первую нормальную область, возвращаемую цитируемым ОФ.
- page-sequence
-
ОФ fo:page-sequence используется для спецификации того, как создавать (суб-)последовательность страниц внутри документа; например, главу репортажа. Содержимое этих страниц получается из потомков поплавков от fo:page-sequence.
- page-sequence-master
-
fo:page-sequence-master специфицирует последовательности страниц-мастеров, используемых для генерации последовательностей страниц.
- region-after
-
Этот регион определяет порт просмотра, размещённый на стороне "after" региона fo:region-body.
- region-before
-
Этот регион определяет порт просмотра, размещённый на стороне "before" региона fo:region-body.
- region-body
-
Этот регион определяет пару порт просмотра/ссылка, размещённую "center" в fo:simple-page-master.
- region-end
-
Этот регион определяет порт просмотра, размещённый на стороне "end" тела региона fo:region-body.
- region-start
-
Этот регион определяет порт просмотра, размещённый на стороне "start" тела региона fo:region-body.
- repeatable-page-master-alternatives
-
fo:repeatable-page-master-alternatives специфицирует субпоследовательность, состоящую из повторяющихся экземпляров поднабора альтернативных мастер-страниц. Количество повторений может быть ограниченным или потенциально неограниченным.
- repeatable-page-master-reference
-
fo:repeatable-page-master-reference специфицирует субпоследовательность, состоящую из повторяющихся экземпляров одной мастер-страницы. Количество повторений может быть ограниченным или потенциально неограниченным.
- retrieve-marker
-
fo:retrieve-marker используется в сочетании с fo:marker при создании бегущих "шапок" и футеров.
- root
-
Узел fo:root это корневой верхний узел результирующего дерева XSL. Это дерево состоит из ОФ.
- simple-page-master
-
fo:simple-page-master используется для генерации страниц и специфицирует геометрию страницы. Страница может быть подразделена на несколько регионов (до5).
- single-page-master-reference
-
fo:single-page-master-reference специфицирует субпоследовательность, состоящую из одного экземпляра одной мастер-страницы.
- static-content
-
ОФ fo:static-content содержит последовательность или дерево ОФ, которые существуют в одном регионе или повторяются в одинаково называющихся регионах на одной или более страницах в последовательности страниц. Чаще всего используется для создания повторяющихся или "бегущих" шапок и футеров.
- table
-
Объект потока fo:table используется для форматирования табличного материала.
- table-and-caption
-
Объект потока fo:table-and-caption используется для форматирования таблицы с заголовком.
- table-body
-
ОФ fo:table-body имеет в качестве содержимого тело таблицы.
- table-caption
-
ОФ fo:table-caption используется в качестве контейнера ОФ блок-уровня и содержит заголовок таблицы только тогда, когда используется fo:table-and-caption.
- table-cell
-
ОФ fo:table-cell используется для группирования содержимого, размещая его в ячейке таблицы.
- table-column
-
ОФ fo:table-column специфицирует характеристики ячеек таблицы, находящихся в одном столбце и имеющих общий захват/span.
- table-footer
-
ОФ fo:table-footer используется как контейнер содержимого футера таблицы.
- table-header
-
ОФ fo:table-header используется как контейнер содержимого "шапки"/header таблицы.
- table-row
-
ОФ fo:table-row используется для группирования ячеек таблицы в ряды.
- title
-
ОФ fo:title используется для ассоциирования заголовка с данной последовательностью страниц. Этот заголовок может использоваться интерактивным пользовательским агентом для идентификации страниц. Например, содержимое fo:title может быть отформатировано и отображено в окне "title" или в "tool tip".
- wrapper
-
ОФ fo:wrapper используется для специфицирования наследуемых свойств для группы ОФ. Он не имеет дополнительной семантики форматирования.
6.4 Объявление и Разбивка на Страницы и Структура Объектов Форматирования
6.4.1 Введение
Корневой узел дерева объектов форматирования обязан быть ОФ fo:root. Потомками ОФ fo:root являются отдельные fo:layout-master-set, необязательные fo:declarations и последовательность из одного или более fo:page-sequences. ОФ fo:layout-master-set определяет геометрию и последовательность страниц; дочерние fo:page-sequences, называемые потоками/flows (содержащимися в fo:flow и fo:static-content), предоставляют содержимое, распределяемое по страницам. Объект fo:declarations является оболочкой для объектов форматирования, чьё содержимое используется в качестве ресурса процесса форматирования. Процесс генерации страниц выполняется автоматически процессором XSL, форматирующим результирующее дерево.
Потомки fo:layout-master-set являются спецификациями разбивки на страницы и структуры. Имена этих спецификаций оканчиваются на "-master". Есть два типа спецификаций разбивки на страницы и структуры: мастер-страницы/page-masters и мастер-последовательности-страниц/page-sequence-masters. Мастер-страницы описывают предполагаемое подразделение страницы и геометрию этого подразделения. Мастера-последовательности-страниц описывают последовательность мастер-страниц, используемых для генерации страниц в ходе форматирования fo:page-sequence.
6.4.1.1 Мастера-последовательности-страниц
Каждый fo:page-sequence-master характеризует набор возможных последовательностей мастер-страниц. Для каждого данного fo:page-sequence будет использоваться только один из возможных наборов последовательностей. Используемая последовательность - это любая последовательность, удовлетворяющая ограничениям, определяемым отдельными мастер-страницами, потоками, генерирующими страницы на основе мастер-страниц и самим fo:page-sequence-master.
fo:page-sequence-master используется для определения того, какие мастер-страницы используются и в каком порядке. Потомки fo:page-sequence-master это последовательность спецификаций субпоследовательностей. Мастер-страницы в субпоследовательности могут быть специфицированы ссылкой на одну мастер-страницу или как повторение одной или более мастер-страниц. Например, последовательность может начинаться несколькими явно определёнными мастер-страницами и продолжаться повторением какой-то другой мастер-страницы (или нескольких).
fo:single-page-master-reference используется для специфицирования субпоследовательности, состоящей из одной мастер-страницы.
Есть два способа специфицировать последовательность-повторение. fo:repeatable-page-master-reference специфицирует повторение одной мастер-страницы. fo:repeatable-page-master-alternatives специфицирует повторение набора мастер-страниц. То, какая из альтернативных мастер-страниц используется в данном месте субпоследовательности обусловлено тем, чётный или нечётный номер имеет страница, первая ли это страница, последняя ли, или она пустая. Свойство "maximum-repeats" в спецификации повторений управляет числом повторений. Если это свойство не специфицировано, ограничение на количество повторений отсутствует.
6.4.1.2 Мастер-страницы
Мастер-страница это шаблон, используемый при генерации страницы. Страница это пара "порт просмотра/ссылка", в которой область порта просмотра является потомком области корня дерева. Область-порта-просмотра/page-viewport-area определена как порт просмотра страницы, а область -страницы/page-area определена как единственный потомок от page-viewport-area.
page-viewport-area определяется носителем вывода; page-area содержит содержимое страницы и размещает содержимое страницы в носителе вывода.
Одна мастер-страница может использоваться неоднократно. Каждый раз, когда она используется, она генерирует одну страницу; например, мастер-страница, на которую имеется ссылка из fo:repeatable-page-master-reference, будет использована в fo:page-sequence для генерации одной страницы для каждого вхождения ссылки в специфицированной субпоследовательности.
ПРИМЕЧАНИЕ:
Если страницы используются Пользовательским Агентом (ПА), таким как Web-браузер, то обычно каждый документ имеет одну страницу. Порт просмотра, используемый для просмотра страницы, определяет её размер. Когда страницы размещаются на неинтерактивном носителе, таком как лист бумаги, страницы соответствуют одному или более листам бумаги. Размер бумаги определяет размер страницы.
В данной спецификации имеется только один вид мастер-страниц - fo:simple-page-master. В будущих версиях данной спецификации могут быть введены дополнительные виды мастер-страниц.
fo:simple-page-master имеет в качестве потомков спецификации одного или более регионов.
Спецификация региона используется как мастер, мастер-регион/region-master, при генерации пары порт-просмотра/ссылка, состоящей из region-viewport-area и region-reference-area. region-viewport-area всегда является потомком page-area, генерируемой с использованием предка region-master'а.
ПРИМЕЧАНИЕ:
Регионы страницы аналогичны "фрэймам" в документах HTML. Обычно как минимум один из этих регионов имеет бесконечный размер по одному из своих параметров. Для языков с режимом письма lr-tb (или rl-tb) этот регион обычно имеет бесконечный размер в направлении сверху-вниз. Порт просмотра представляет видимую часть фрэйма. Поток, назначенный региону, просматривается путём прокрутки reference-area региона в порте просмотра.
Каждый регион определяется ОФ региона. Каждый ОФ региона имеет имя и определённую позицию. Кроме того, высота или ширина региона фиксирована, а другие размеры могут быть фиксированными или бесконечными. Например, регион - тело Web-страницы может иметь бесконечную высоту.
Спецификация региона определяет размер и положение областей region-viewport-areas, генерируемых с использованием ОФ региона. Положение порта просмотра является относительным к его родительской page-area.
В версии 1.0 данных Рекомендаций мастер-страница состоит из не более чем пяти регионов: "region-body" и четырёх других регионов, по одному с каждой стороны тела/body. Для того чтобы регионы по сторонам соответствовали текущему режиму письма, эти регионы именуются "region-before/регион-до" (соотносимый с "header" в режиме письма "lr-tb"), "region-after/регион-после" (соотносимый с "footer" в режиме "lr-tb"), "region-start" (соотносимый с "left-sidebar" в режиме "lr-tb") и "region-end" (соотносимый с "right-sidebar" в режиме "lr-tb"). Ожидается, что в будущих версиях Рекомендаций будет введён механизм, позволяющий мастер-странице содержать произвольное количество произвольно позиционированных регионов произвольных размеров.
Некоторые типы регионов имеют обусловленные субрегионы, ассоциированные с ними, и ассоциированные области region-reference-areas делятся так, чтобы содержать области-потомки, соответствующие субрегионам, включая "main-reference-area" для региона. В мастер-регионах, к которым применяется свойство column-count, область main-reference-area затем подразделяется так, что имеет области-потомки, обозначаемые как "span-reference-areas", количество которых зависит от количества захватов/spans (т.е. блок-областей с span="all"), имеющихся на странице. Они, в свою очередь, подразделяются так, чтобы иметь области-потомки, обозначаемые как "normal-flow-reference-areas", количество которых зависит от количества специфицированных столбцов.
6.4.1.3 Генерация Страницы
Страницы генерируются при обработке форматировщиком последовательностей fo:page-sequences. Как уже было сказано, каждая страница - это пара порт-просмотра/ссылка, где область порта просмотра является потомком корня дерева областей. Каждая страница генерируется с использованием мастер-страницы, чтобы определить области region-viewport-areas и region-reference-areas, соответствующие регионам, специфицированным этой мастер-страницей.
Каждый ОФ fo:page-sequence ссылается или на fo:page-sequence-master, или на мастер-страницу. Если ссылка делается на мастер-страницу, это интерпретируется так, как если бы имелась ссылка на fo:page-sequence-master, повторяющий эту мастер-страницу неограниченное число раз. fo:page-sequence ссылается на мастер-страницу, если fo:page-sequence прямо ссылается на мастер-страницу через свойство "master-reference", или если это свойство ссылается на fo:page-sequence-master, который ссылается на мастер-страницу.
6.4.1.4 Потоки
Имеются два типа потоков/flows: fo:static-content и fo:flow. Поток fo:static-content несёт в себе содержимое, такое как текст шапок и футеров, повторяющееся на большинстве страниц. Поток fo:flow несёт в себе содержимое, распределяемое в последовательности страниц. Обработка потока fo:flow состоит в том, чтобы определить, сколько страниц генерируется для вмещения fo:page-sequence. fo:page-sequence-master используется в качестве генератора последовательности мастер-страниц, в которых будет распределяться содержимое потоков потомков.
Потомки потока это последовательность объектов блок-уровня. Каждый поток имеет имя, заданное в его свойстве "flow-name". Два потока не могут иметь одинаковые имена.
Назначение потоков регионам мастер-страницы определяется отображением-потоков/flow-map. flow-map это ассоциация между потомком потока fo:page-sequence и регионами, определёнными внутри мастер-страниц, на которые ссылается этот fo:page-sequence.
В версии 1.0 данных Рекомендаций flow-map подразумевается. Свойство "flow-name" потока специфицирует, какому региону данный поток назначен. Каждый регион имеет свойство "region-name". Неявное flow-map назначает поток региону с тем же именем. В будущих версиях XSL ожидается, что отображение flow-map станет отдельным ОФ.
Чтобы избавить пользователей от необходимости генерировать имена регионов, все регионы имеют значения по умолчанию для свойства "region-name". region-body, region-before, region-after, region-start и region-end имеют имена по умолчанию "xsl-region-body", "xsl-region-before", "xsl-region-after", "xsl-region-start" и "xsl-region-end".
Кроме того, ОФ fo:static-content может иметь значение свойства "flow-name" - "xsl-before-float-separator" или "xsl-footnote-separator". Если обусловленный субрегион в region-body используется для генерации reference-area на определённой странице, fo:static-content, чьё имя соответствует обусловленному субрегиону, будет форматироваться в reference-area, ассоциированную с этим субрегионом, как специфицировано в разделе [6.10.1.3 Обусловленные Субрегионы].
6.4.1.5 Ограничения при Генерации Страницы
Области, являющиеся потомками page-area, содержатся в мастер-странице, используемой для генерации page-area и потоков, назначаемых регионам, специфицированным в мастер-странице. Для потоков fo:flow, области, генерируемые потомками потока, распределяются на страницы в той последовательности, которая была сгенерирована с использованием мастер-страниц, имеющих регион, которому назначен это поток. Для потоков fo:static-content процесс обработки повторяется для каждой страницы, генерируемой с использованием мастер-страницы, имеющей регион, которому назначен этот поток, с двумя исключениями: для fo:static-content с именем-потока/flow-name xsl-before-float-separator обработка повторяется только для тех областей page-reference-areas, которые имеют области-потомки с классом area-class xsl-before-float, а для fo:static-content с flow-name xsl-footnote-separator обработка повторяется только для тех областей page-reference-areas, которые имеют области-потомки с классом area-class xsl-footnote.
6.4.1.6 Разбивка по Страницам Структуры Дерева
Структура результирующего дерева изображена ниже.

6.4.2 fo:root
Обычное Использование:
Это верхний узел дерева объектов форматирования. Он содержит ОФ fo:layout-master-set (который содержит все мастера, используемые в документе), необязательные fo:declarations и один или несколько объектов fo:page-sequence. Каждый fo:page-sequence представляет последовательность страниц, являющуюся результатом форматирования потомков содержимого fo:page-sequence.
ПРИМЕЧАНИЕ:
Документ может содержать несколько fo:page-sequence. Например, каждая глава документа может быть отдельным fo:page-sequence; это позволит иметь специфическое для каждой главы содержимое, такое как название главы, размещаемое в шапке или футере.
Области:
Области page-viewport-areas возвращаются объектами fo:page-sequence - потомками ОФ fo:root. fo:root не генерирует никаких областей.
Ограничения:
Потомки корня дерева областей являются исключительно областями page-viewport-areas, возвращаемыми fo:page-sequence - потомками fo:root. Набор всех областей, возвращаемый объекту потомками fo:page-sequence, является правильно упорядоченным. (См. раздел [4.7.1 Общие Ограничения Упорядочивания].)
Содержимое: (layout-master-set,declarations?,page-sequence+)
Следующие свойства применяются к данному ОФ:
6.4.3 fo:declarations
Обычное Использование:
ОФ fo:declarations используется для группирования глобальных объявлений в таблице стилей.
Области:
ОФ fo:declarations не генерирует и не возвращает никаких областей.
Ограничения:
Отсутствуют.
Содержимое: (color-profile)+
Объект потока fo:declarations может иметь дополнительные элементы-потомки в не-XSL пространстве имён. Их наличие, однако, не изменяет семантики объектов и свойств пространства имён XSL. Разрешённая структура этих элементов из не-XSL пространства имён определена для их пространства(-в) имён.
6.4.4 fo:color-profile
Обычное Использование:
ОФ fo:color-profile используется для объявления ICC Color Profile/Цветового Профиля таблицы стилей. На color-profile ссылка делается по имени, специфицированному в свойстве "color-profile-name".
color-profile идентифицируется по URI, специфицированному в значении свойства "src". Этот URI может идентифицировать внутренне распознаваемый color-profile или может указывать на кодировку ICC Color Profile, которая должна быть загружена и интерпретирована.
Если на color-profile сделана ссылка (например, в функции rgb-icc [5.10.2 Функции Цвета]), применяются следующие правила:
-
Если color-profile доступен, должно использоваться значение, идентифицируемой из color-profile.
-
Если color-profile недоступен, должно использоваться sRGB ([sRGB]).
Области:
ОФ fo:color-profile не генерирует и не возвращает никаких областей.
Ограничения:
Отсутствуют.
Содержимое: EMPTY
Следующие свойства применяются к данному ОФ:
6.4.5 fo:page-sequence
Обычное Использование:
ОФ fo:page-sequence используется для спецификации создания (суб-)последовательности страниц внутри документа: например, главы репортажа. Содержимое этих страниц получается из потомков потока (состоящих из объектов потока: одного fo:flow и любого количества fo:static-content) fo:page-sequence. Структура этих страниц получается из fo:page-sequence-master или page-master, на которые ссылается уточнение master-reference в fo:page-sequence. Последовательности областей, возвращаемых каждым объектом потока - потомком fo:page-sequence, становятся потомками генерируемых страниц, как описано далее.
Области:
ОФ fo:page-sequence генерирует последовательность пар viewport/reference и возвращает области page-viewport-area. Для каждой области page-reference-area и каждого региона, специфицированного в мастер-странице, используемой для генерации этих page-reference-area, объект fo:page-sequence генерирует также пары viewport/reference для вхождения этого региона в этой области page-reference-area и может генерировать области before-float-reference-area, footnote-reference-area и main-reference-area и одну или более областей normal-sequence-reference-area. Генерация этих последующих областей дана в описаниях мастеров fo:simple-page-master и мастер-регионов. Он может генерировать также область-заголовка/title-area.
Все области, генерируемые fo:page-sequence, имеют класс области "xsl-absolute".
Ограничения:
Каждая пара page-viewport-area/page-reference-area генерируется с использованием мастер-страницы, удовлетворяющей ограничениям page-sequence-master, идентифицируемого уточнением master-reference для fo:page-sequence, или с использованием мастер-страницы, которая прямо идентифицируется уточнением master-reference. Области region-viewport-area, потомки такой области page-reference-area, обязаны соответствовать регионам, которые являются потомками данной мастер-страницы.
Области, генерируемые fo:page-sequence, имеют в качестве своих потомков области, возвращаемые потоками, которые являются потомками fo:page-sequence.
Области, возвращаемые объекту fo:page-sequence потоком, обязаны удовлетворять 4 типам ограничений:
-
Completeness\Завершённость. Все области, возвращаемые потомками дочерних потоков объекта fo:page-sequence, становятся потомками областей, генерируемых объектом fo:page-sequence, за исключением глиф-областей, подлежащих удалению или замещению, как описано в разделах [4.7.2 Конструирование Строк] и [4.7.3 Инлайн-Конструирование].
-
Flow-map association\Ассоциирование с отображением потока. Все области, возвращаемые потоками-потомками объекта fo:page-sequence, становятся потомками областей region-reference-area, генерируемых из областей column-area, ассоциированных с потоком действующим отображением потока/flow-map, за исключением областей, возвращаемых из объекта fo:static-content с именем-потока/flow-name xsl-before-float-separator или xsl-footnote-separator.
Области, возвращаемые из fo:static-content с flow-name xsl-before-float-separator, становятся дочерними для области before-float-reference-area области, ассоциированной с fo:region-body, следующей после всех областей-родственников, имеющих класс области xsl-before-float. Области, возвращаемые из fo:static-content с flow-name xsl-footnote-separator, становятся дочерними для области footnote-reference-area области, ассоциированной с fo:region-body, предшествующей всем областям-родственникам, имеющим класс области xsl-footnote.
-
Area-class association\Ассоциация с классом области. Области, возвращаемые потомками потока объекта fo:page-sequence, распределяются так: все области класса области xsl-footnote обязаны быть потомками области footnote-reference-area; области класса области xsl-before-float обязаны быть потомками области before-float-reference-area; все другие области (включая нормальные области) обязаны быть потомками области main-reference-area в регионе.
-
Stacking\Стэкирование (Упаковка). Упаковываемые области данного класса, возвращаемые потомками каждого потока, соответствующим образом стэкируются в подходящей области reference-area, как описано выше.
Если генерируется title-area, то должны выполняться следующие ограничения:
-
Завершённость. Все области, возвращаемые потомками объекта fo:title, потомка объекта fo:page-sequence, становятся потомками области title-area, генерируемой объектом fo:page-sequence, за исключением глиф-областей, подлежащих удалению или замещению, как описано в разделах [4.7.2 Конструирование Строк] и [4.7.3 Инлайн-Конструирование].
-
Стэкирование. Области, возвращаемые потомками объекта fo:title, соответствующим образом стэкируются в title-area.
Ограничение упорядочивания по умолчанию из раздела [4.7.1 Общие Ограничения Упорядочивания] не применяется к fo:page-sequence. Ограничения упорядочивания по умолчанию применяются к объектам-потокам потока внутри отдельного fo:flow; специальные ограничения упорядочивания применяются к объектам - потомкам fo:static-content.
Содержимое: (title?,static-content*,flow)
Следующие свойства применяются к данному ОФ:
6.4.6 fo:layout-master-set
Обычное Использование:
fo:layout-master-set является оболочкой вокруг всех мастеров, используемых в документе. Сюда входят мастера page-sequence-master, мастер-страницы, мастер-регионы.
Области:
ОФ fo:layout-master-set не генерирует области непосредственно. Для генерации страниц fo:page-sequence использует мастера - потомки набора fo:layout-master-set.
Ограничения:
Значение уточнения master-name/мастер-имя в каждом потомке набора fo:layout-master-set обязано быть уникальным в пределах данного набора.
Содержимое: (simple-page-master|page-sequence-master)+
6.4.7 fo:page-sequence-master
Обычное Использование:
fo:page-sequence-master используется для специфицирования ограничений и порядка, в котором данный набор мастер-страниц будет использоваться при генерации последовательности страниц. Страницы автоматически генерируются, когда fo:page-sequence-master используется при форматировании fo:page-sequence.
ПРИМЕЧАНИЕ:
Есть несколько способов специфицирования потенциальную последовательность страниц. Можно специфицировать последовательность ссылок на определённые мастер-страницы. Это даёт ограниченную последовательность потенциальных страниц. Можно также специфицировать повторяющуюся субпоследовательность из одной или более мастер-страниц. Эта последовательность может быть ограниченной или неограниченной. Наконец, можно смешивать эти два типа спецификаторов субпоследовательностей.
Области:
ОФ fo:page-sequence-master не генерирует области непосредственно. Он используется объектом форматирования fo:page-sequence для генерации страниц.
Ограничения:
Потомки мастера fo:page-sequence-master это последовательности спецификаторов субпоследовательностей. Последовательность страниц удовлетворяет ограничению, определённому мастером fo:page-sequence-master, если: (a) она может быть поделена на последовательность субпоследовательностей страниц, которая отображается один к одному в начальную субпоследовательность последовательности спецификаторов субпоследовательности, являющихся потомками мастера fo:page-sequence-master, и (b) для каждой субпоследовательности страниц в разделе/partition, эта субпоследовательность удовлетворяет ограничениям соответствующих спецификаторов субпоследовательностей. Последовательность субпоследовательностей страниц может быть короче, чем последовательность спецификаторов субпоследовательностей.
Будет считаться ошибкой, если вся последовательность потомков спецификаторов субпоследовательностей будет исчерпана, а некоторые области, возвращённые fo:flow, ещё не размещены. В реализациях данная ситуация может обрабатываться путём повторного использования спецификатора субпоследовательности, использованного при последней генерации страницы.
Содержимое: (single-page-master-reference|repeatable-page-master-reference|repeatable-page-master-alternatives)+
Следующее свойство применяется к данному ОФ:
6.4.8 fo:single-page-master-reference
Обычное Использование:
fo:single-page-master-reference это простейший спецификатор субпоследовательности. Он специфицирует субпоследовательность, состоящую из одного экземпляра мастер-страницы. Специфицирует использование определённой мастер-страницы в данной точке последовательности страниц, которая может генерироваться с использованием мастера fo:page-sequence-master, являющегося родителем мастера fo:single-page-master-reference.
Области:
ОФ fo:single-page-master-reference не генерирует области непосредственно. Он используется объектом форматирования fo:page-sequence для генерации страниц.
Ограничения:
fo:single-page-master-reference содержит ссылку на мастер fo:simple-page-master, имеющий то же мастер-имя/master-name, что и уточнение master-reference в fo:single-page-master-reference.
Субпоследовательность страниц, отображаемая в этот спецификатор субпоследовательности, удовлетворяет ограничениям данного спецификатора субпоследовательности, если (a) субпоследовательность страниц состоит из одной страницы, и (b) эта страница ограничена как генерируемая с использованием мастера fo:simple-page-master, на который есть ссылка в fo:single-page-master-reference.
Содержимое: EMPTY
Следующее свойство применяется к данному ОФ:
6.4.9 fo:repeatable-page-master-reference
Обычное Использование:
fo:repeatable-page-master-reference это следующий простейший спецификатор субпоследовательности. Он специфицирует субпоследовательность, состоящую из повторяющихся экземпляров одной мастер-страницы. Количество повторений может быть ограниченным или потенциально неограниченным.
Области:
ОФ fo:repeatable-page-master-reference не генерирует области непосредственно. Он используется объектом форматирования fo:page-sequence для генерации страниц.
Ограничения:
fo:repeatable-page-master-reference содержит ссылку на мастер fo:simple-page-master, имеющий то же мастер-имя/master-name, что и уточнение master-reference в fo:repeatable-page-master-reference.
Субпоследовательность страниц, отображаемая в этот спецификатор субпоследовательности, удовлетворяет ограничениям данного спецификатора субпоследовательности, если (a) субпоследовательность страниц состоит из нуля или более страниц, (b) каждая страница генерируется с использованием мастера fo:simple-page-master, на который имеется ссылка в fo:repeatable-page-master-reference, и (c) размер последовательности меньше чем или равен значению maximum-repeats/максимального количества повторений.
Если ни один мастер-регион, потомок fo:repeatable-page-master, не имеет имени региона/region-name, ассоциированного с каким либо потоком в последовательности fo:page-sequence, тогда субпоследовательность ограничивается как имеющая нулевую длину.
Содержимое: EMPTY
Следующие свойства применяются к данному ОФ:
6.4.10 fo:repeatable-page-master-alternatives
Обычное Использование:
ОФ fo:repeatable-page-master-alternatives является самым сложным спецификатором субпоследовательности. Он специфицирует субпоследовательность, состоящую из повторяющихся экземпляров набора альтернативных мастер-страниц. Количество повторений может быть ограниченным или потенциально неограниченным. То, какая из альтернативных мастер-страниц используется в любой точке последовательности, зависит от вычисления условия при использовании альтернативы. Обычно условия тестируют, является ли генерируемая с использованием альтернативы страница первой или последней страницей в последовательности страниц и пустая ли это страница. Полный набор условий позволяет использовать различные мастер-страницы для первой, чётных и нечётных и пустых страниц.
ПРИМЕЧАНИЕ:
Поскольку условия тестируются от начала последовательности потомков, последняя альтернатива в последовательности обычно имеет условие, которое всегда верно, и эта альтернатива ссылается на мастер-страницу, которая используется для всех страниц, не получающих какой-либо специализированной структуры вывода.
Области:
ОФ fo:repeatable-page-master-alternatives не генерирует области непосредственно. Он используется объектом форматирования fo:page-sequence для генерации страниц.
Ограничения:
Потомками fo:repeatable-page-master-alternatives являются объекты fo:conditional-page-master-reference. Эти потомки будут называться альтернативами.
Субпоследовательность страниц, отображаемая в этот спецификатор субпоследовательности, удовлетворяет ограничениям этого спецификатора субпоследовательности, если (a) субпоследовательность страниц состоит из 0 или более станиц, (b) каждая страница генерируется с использованием fo:simple-page-master и имеет на себя ссылку одной из альтернатив, которые являются потомками объектов fo:repeatable-page-master-alternative, (c) условия в данной альтернативе имеют значение true, (d) эта альтернатива является первой альтернативой последовательности потомков, для которой все условия - true, и (e) размер субпоследовательности меньше чем или равен значению maximum-repeats/максимального-количества-повторений.
Содержимое: (conditional-page-master-reference+)
Следующие свойства применяются к данному ОФ:
Pyramidin.Narod.RU
|