друг!
ЯндексЯндекс. ДеньгиХочу такую же кнопку

Объекты Форматирования-7

 

Назад

Оглавление

В конец страницы

Вперёд

 

Краткое Содержание
6 Объекты Форматирования (ОФ)
    6.1 Введение
    6.2 Содержимое ОФ
    6.3 ОФ. Резюме.
    6.4 Объявление и Разбивка на Страницы и Структура ОФ
    6.5 ОФ уровня блока
    6.6 ОФ инлайн-уровня
    6.7 ОФ для Таблиц
    6.8 ОФ для Списков
    6.9 Динамические Эффекты: Объекты Форматирования Link и Multi
    6.10 Внестрочные/Out-of-Line ОФ
    6.11 Прочие ОФ

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