Объекты Форматирования-7
6.10.2 fo:float
Обычное Использование:
ОФ fo:float обычно используется для позиционирования изображения в отдельной области в начале страницы или для позиционирования изображения у одной из сторон с нормальным содержимым, обтекающим изображение вокруг и по другой стороне.
Области:
fo:float генерирует необязательную область с классом области "xsl-anchor" и одну или более блок-областей, разделяющих тот же самый класс областей: "xsl-before-float", "xsl-side-float" или "xsl-normal", как специфицировано в свойстве "float". (fo:float генерирует нормальные блок-области, если его свойство "float" имеет значение "none".)
Области с классом области "xsl-side-float" являются ссылочными областями/reference areas.
Область с классом области "xsl-before-float" размещается как потомок области before-float-reference-area.
Необязательная область с классом области "xsl-anchor" не генерируется, если свойство "float" имеет значение "none" или если из-за ошибки, как описано в разделе ограничений, fo:float будет сформатирован так, как будто его свойство "float" было "none". Иначе будет сгенерирована область с классом области "xsl-anchor".
Область с классом области "xsl-anchor" не имеет потомков и является инлайн-областью, если только это не нарушает ограничений: (a.) что любой потомок области обязан быть блок-областью или инлайн-областью, но не смешанным, и (b.) что потомки строчной области/line-area не могут состоять только из якорных/anchor областей. В тех случаях когда инлайн-область нарушает эти ограничения, fo:float обязан вместо этого генерировать блок-область.
Ограничения:
Нормальная инлайн-область, генерируемая объектом fo:float, будет помещена в дереве областей так, как если бы fo:float имел в свойстве "keep-with-previous" значение "always". Инлайн-область имеет размер нуль для обоих размеров - inline-progression-dimension и block-progression-dimension.
Термин anchor-area/якорная область используется здесь для обозначения области с классом области "xsl-anchor", генерируемой объектом fo:float. Область с классом области "xsl-side-float" это поплавок side-float.
Никакая область не может иметь более одной блок-области - потомка с тем же самым классом области, возвращаемой тем же самым ОФ fo:float.
Области с классом области "xsl-before-float" обязаны быть правильно упорядочены внутри дерева областей относительно других областей с тем же классом области.
Прямоугольники заполнения, рамки и содержимого блок-областей, генерируемых fo:float, совпадают. То есть заполнение и рамка равны нулю у любого края области.
Следующие ограничения применяются к объектам fo:float, генерирующим области с классом области "xsl-before-float":
-
Является ошибкой, если fo:float появляется как потомок потока, не назначенного телу региона, или как потомок контейнера fo:block-container, генерирующего абсолютно позиционированные области. В любом случае fo:float будет сформатирован так, будто его свойство "float" имеет значение "none".
-
Блок-область с классом области "xsl-before-float", генерируемая fo:float, может быть только потомком области before-float-reference-area, то есть (a) потомком "region-reference-area", сгенерированной с использованием мастер-региона для региона, которому назначен поток, имеющий fo:float в качестве потомка, и (b) является потомком с той же самой страницы, содержащей якорную область, или со страницы, следующей за данной страницей.
-
fo:float не может генерировать никаких дополнительных блок-областей с классом области "xsl-before-float", если только страница, содержащая предшествующую блок-область, генерируемую объектом fo:float, не содержит других областей с классом области "xsl-before-float", не имеет пустой области main-reference-area и не содержит области footnote-reference-area.
-
Свойство "clear" не применяется.
Следующие ограничения применяются к объектам fo:float, генерирующим области с классом области "xsl-side-float":
-
Каждый поплавок side-float размещается либо как потомок ближайшей области-предка reference-area якорной области, или как потомок якорной области, или как потомок последней области reference-area в той же цепи областей reference-area.
-
Поплавки side-float - родственники в дереве областей - могут перекрываться своими прямоугольниками содержимого.
-
Описание в разделе 9.5 [CSS2] будет использоваться для определения форматирования fo:float и отображения нормальных строчных областей и поплавков side-float, которые перекрываются инлайн, со следующими изменениями:
-
Все ссылки вправо и влево должны интерпретироваться как соответствующие относительные направления "start" и "end" их режима письма. Свойство "float" будет иметь дополнительно относительные к режиму письма значения "start" и "end".
-
Все ссылки на top/верх и bottom/низ будут интерпретироваться как соответствующие относительные направления "before" и "after" их режима письма.
-
Фраза "current line box/текущий строчный бокс" будет интерпретироваться как означающая строчную область, содержащую якорную область, генерируемую поплавком. Если якорная область это блок-область, тогда "current line box" не существует.
-
Поплавки side-float получают значения своих размеров в размере inline-progression-dimension изначально от своих областей-потомков: размер не определяется явным значением свойства.
-
Поплавок side-float может добавляться для согласования вторжения любой инлайн-перекрывающей блок-области, чья ближайшая область-предок reference-area является родителем поплавка side-float. См. в разделе [4.4.2 Согласование Вторжения] описание подгонки вторжения.
-
ПА может выполнять своё собственное определение, после учёта согласования вторжений, вызываемых одним или более перекрывающими поплавками side-floats, что оставшегося пространства в направлении inline-progression-direction недостаточно для следующего поплавка side-float или нормальной блок-области. ПА может адресовать это, заставляя следующий side-float или нормальную область "clear/очищать" один из поплавков side-floats, как указано в описании свойства "clear", так что согласование вторжения будет существенно сокращено. Из поплавков side-float, которые могут быть очищены, чтобы соответствовать этим ограничениям, реально очищаемый поплавок side-float обязан быть поплавком, чей край after-edge находится ближе всего к before-edge родительской области reference-area.
ПРИМЕЧАНИЕ: ПА может определять достаточное количество пространства , используя фиксированный размер или эвристическими методами, такими как, вмещается ли целое слово в доступное пространство, или некоторой комбинацией, чтобы обрабатывать текст и изображение.
Содержимое: (%block;)+
fo:float не может содержать fo:float, fo:footnote или fo:marker в качестве потомков.
Кроме того, fo:float не может содержать в качестве потомка контейнер fo:block-container, который генерирует абсолютно позиционируемую область.
Следующие свойства применяются к данному ОФ:
6.10.3 fo:footnote
Обычное Использование:
fo:footnote обычно используется для производства сносок-цитирования/footnote-citations внутри region-body на странице и соответствующих сносок в отбельной области, ближайшей к краю after-edge этой страницы.
Области:
ОФ fo:footnote не генерирует никаких областей. ОФ fo:footnote возвращает области, генерируемые и возвращаемые его потомком объекта fo:inline.
Дополнительно ОФ fo:footnote возвращает блок-области с классом области "xsl-footnote", генерируемые его потомком объектом fo:footnote-body. Область с классом области "xsl-footnote" размещается как потомок области footnote-reference-area.
Ограничения:
Термин anchor-area определён для обозначения последней области, генерируемой м возвращаемой fo:inline - потомком fo:footnote.
Блок-область, возвращаемая объектом fo:footnote, допускается только как потомок области footnote-reference-area, которая является (a) потомком области "region-reference-area", генерируемой с использованием мастер-региона для региона, которому назначен поток, имеющий fo:footnote в качестве потомка, и (b) является потомком с той же самой страницы, содержащей якорную область, или со страницы, следующей за данной страницей, содержащей якорную область.
Вторая блок-область и любые дополнительные блок-области, возвращаемые объектом fo:footnote, обязаны разместиться в субпоследовательности страниц, непосредственно следующей за страницей, содержащей первую блок-область, возвращаемую объектом fo:footnote, перед любым другим размещаемым содержимым. Если последующая страница не имеет региона тела/region-body, ПА обязан использовать мастер-регион последней страницы, которая содержала region-body, для размещения дополнительных блок-областей.
Будет ошибкой, если fo:footnote появится как потомок потока, который не назначен телу региона, или как потомок fo:block-container, генерирующего абсолютно позиционированные области. В любом случае блок-области, генерируемые fo:footnote-body - потомком объекта fo:footnote - должны быть возвращены предку объекта fo:footnote и размещены в дереве областей так, как если бы они были нормальными областями уровня блока.
Содержимое: (inline,footnote-body)
fo:footnote не может иметь в качестве потомков fo:float, fo:footnote или fo:marker. Кроме того, fo:footnote не может иметь в качестве потомка контейнер fo:block-container, генерирующий абсолютно позиционированную область.
Следующие свойства применяются к данному ОФ:
6.10.4 fo:footnote-body
Обычное Использование:
fo:footnote-body используется для генерации содержимого сноски.
Области:
fo:footnote-body генерирует и возвращает одну или более областей блок-уровня с классо м области "xsl-footnote".
Ограничения:
fo:footnote-body допускается только как потомок fo:footnote.
никакая область не может иметь более одной блок области - потомка, возвращаемой тем же самым ОФ fo:footnote-body.
Области с классом области "xsl-footnote" обязаны правильно упорядочиваться внутри дерева областей относительно других областей, имеющих тот же класс области.
Содержимое: (%block;)+
Следующие свойства применяются к данному ОФ:
6.11 Прочие Объекты Форматирования
6.11.1 Введение
В следующих примерах показано использование ОФ fo:wrapper, не имеющего семантики, но действующего как "курьер" для наследуемых свойств.
6.11.1.1 Пример
Код: <doc>
<p>This is an <emph>important word</emph> in this
sentence that also refers to a <code>variable</code>.</p>
</doc>
Элементы "emph" представлены с использованием полужирного шрифта, и элементы "code" - с использованием шрифта Courier. Таблица стилей 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="p">
<fo:block>
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="emph">
<fo:wrapper font-weight="bold">
<xsl:apply-templates/>
</fo:wrapper>
</xsl:template>
<xsl:template match="code">
<fo:wrapper font-family="Courier">
<xsl:apply-templates/>
</fo:wrapper>
</xsl:template>
</xsl:stylesheet>
Элемент fo: и дерево атрибутов: <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format">This is an
<fo:wrapper font-weight="bold">important word</fo:wrapper>
in this sentence that also refers to a
<fo:wrapper font-family="Courier">variable</fo:wrapper>.
</fo:block>
6.11.2 fo:wrapper
Обычное Использование:
ОФ fo:wrapper используется для специфицирования наследуемых свойств для группы ОФ.
Области:
ОФ fo:wrapper не генерирует никаких областей. ОФ fo:wrapper возвращает последовательность областей, создаваемую путём конкатенации последовательностей областей, возвращаемых каждым потомком объекта fo:wrapper.
Получение Уточнения:
За исключением "id", объект fo:wrapper не имеет свойств, используемых им непосредственно. Однако он служит в качестве курьера, содержащего наследуемые свойства, используемые его потомками.
Ограничения:
Порядок конкатенации последовательностей областей, возвращаемых потомками fo:wrapper, такой же, что и порядок расположения потомков под fo:wrapper.
Содержимое: (#PCDATA|%inline;|%block;)*
fo:wrapper может иметь только потомков, которые могут быть потомками родителя объекта fo:wrapper, с двумя исключениями:
-
fo:wrapper всегда может содержать последовательность из нуль или более fo:marker в качестве начальных потомков.
-
Только fo:wrapper - потомок fo:multi-properties - может иметь потомков, которые допускаются вместо fo:multi-properties.
Это ограничение применяется рекурсивно.
ПРИМЕЧАНИЕ:
Например, fo:wrapper - потомок другого fo:wrapper - может иметь только таких потомков, которые допускаются в качестве потомков родительского fo:wrapper.
Следующие свойства применяются к данному ОФ:
6.11.3 fo:marker
Обычное Использование:
fo:marker используется в сочетании с fo:retrieve-marker для создания фиксированных шапок или футеров. Типичные примеры:
-
шапки словарей, показывающие первое и последнее слово, определённые на странице.
-
шапки, показывающие заголовки глав и разделов страницы.
fo:marker должен быть начальным потомком своего родительского ОФ.
Области:
fo:marker прямо не производит областей. Его потомки могут быть запрошены отформатированы из fo:static-content с использованием fo:retrieve-marker, значение свойства "retrieve-class-name" которого - такое же, как и значение свойства "marker-class-name" этого fo:marker.
Ограничения:
fo:marker допускается только в качестве потомка объекта fo:flow.
Примечание: Значения свойств, установленные в fo:marker или его предках, не будут наследоваться потомками объекта fo:marker, если они запрашиваются объектом fo:retrieve-marker.
Является ошибкой, если два или более fo:marker, имеющих общего родителя, имеют и общее значение свойства "marker-class-name".
Содержимое: (#PCDATA|%inline;|%block;)*
fo:marker может содержать любые ОФ, разрешённые в качестве замещения для любого fo:retrieve-marker, который запрашивает потомков объекта fo:marker.
Следующие свойства применяются к данному ОФ:
6.11.4 fo:retrieve-marker
Обычное Использование:
fo:retrieve-marker используется в сочетании с fo:retrieve-marker для создания фиксированных шапок или футеров. Типичные примеры:
-
шапки словарей, показывающие первое и последнее слово, определённые на странице.
-
шапки, показывающие заголовки глав и разделов страницы.
Область:
fo:retrieve-marker прямо не производит областей. Он (концептуально) замещается потомками объекта fo:marker, который его запрашивает.
Получение Уточнения:
Свойства и уточнения, специфицированные в предках объекта fo:retrieve-marker, учитываются при форматировании потомков запрошенного fo:marker так. как если бы потомки имели того же предка, что и fo:retrieve-marker.
Ограничения:
fo:retrieve-marker допускается только в качестве потомка объекта fo:static-content.
fo:retrieve-marker специфицирует, что потомки выбранного fo:marker будут форматироваться так, как если бы они замещали fo:retrieve-marker в дереве форматирования.
Свойства объекта fo:retrieve-marker вводят иерархию приоритетов для областей в дереве областей. Каждый fo:marker концептуально присоединяется к каждой нормальной области, возвращаемой родительским для fo:marker ОФ. Кроме того, fo:marker концептуально присоединяется к каждой не-нормальной области, генерируемой непосредственно родительским для fo:marker объектом форматирования. В противоположность этому, области, генерируемые любым потомком объекта fo:flow, могут иметь нуль или более объектов fo:marker, концептуально подсоединённых. fo:marker, чьи потомки запрошены, это объект (концептуально), присоединённый к области, находящейся на вершине этой иерархии. Каждая область в этой иерархии считается имеющей приоритет, или "лучшей", чем любая область ниже её в этой иерархии. При сравнении двух областей с целью определения, которая из них лучше, термины "first/первая" и "last/последняя" относятся к порядку pre-order traversal (предупорядоченного пересечения) дерева областей. Термин "containing page/содержащая страница" используется здесь для обозначения страницы, содержащей первую область, сгенерированную или возвращённую потомками запрошенного объекта fo:marker. Область, имеющая присоединённый fo:marker, значение свойства "marker-class-name" которого - то же, что и значение свойства "retrieve-class-name" объекта fo:retrieve-marker, определяется как квалифицирующая область. Только квалифицирующие области имеют позиции в иерархии. Квалифицирующая область внутри страницы лучше, чем любая квалифицирующая область внутри предшествующей страницы, за исключением областей, которые не имеют позиции в иерархии, если они находятся внутри страниц, следующих после содержащей страницы. Если свойство "retrieve-boundary" имеет значение "page-sequence", то область не имеет позиции в иерархии, если находится на странице из последовательности страниц, предшествующей той последовательности страниц, которая содержит данную страницу. Если свойство "retrieve-boundary" имеет значение "page", то область не имеет позиции в иерархии, если не находится на содержащей странице.
Если свойство "retrieve-position" имеет значение "first-starting-within-page", тогда первая квалифицирующая область на содержащей странице, чьё уточнение "is-first" имеет значение "true", - лучше, чем любая другая область. Если такой области нет, тогда первая квалифицирующая область на содержащей странице - лучше, чем любая другая область.
Если свойство "retrieve-position" имеет значение "first-including-carryover", тогда первая квалифицирующая область на содержащей странице - лучше, чем любая другая область.
Если свойство "retrieve-position" имеет значение "last-starting-within-page", тогда последняя квалифицирующая область на содержащей странице, чьё уточнение "is-first" имеет значение "true", - лучше, чем любая другая область. Если такой области нет, тогда последняя квалифицирующая область на содержащей странице - лучше, чем любая другая область.
Если свойство "retrieve-position" имеет значение "last-ending-within-page", тогда последняя квалифицирующая область на содержащей странице, чьё уточнение "is-last" имеет значение "true", - лучше, чем любая другая область. Если такой области нет, тогда последняя квалифицирующая область на содержащей странице - лучше, чем любая другая область.
Если иерархия областей пуста, не запрашиваются никакие ОФ.
Содержимое: EMPTY
Следующие свойства применяются к данному ОФ:
Pyramidin.Narod.RU
|