Содержимое XSL-FO-документа (то, что в нем не является разметкой) преимущественно является текстом. Содержимое, которое не является XML, например, GIF и JPEG, можно включать в документ почти также, как это делается в HTML с помощью элемента IMG
. Другие формы XML-содержимого, например, MathML или SVG, можно включать прямо в XSL-FO-документ. Все содержимое размещается в нескольких видах элементов, включая:
Все виды этих элементов являются потомками либо элемента fo:flow
либо элемента fo:static-content
. Они никогда не размещаются прямо в элементах fo:page-sequence
или fo:simple-page-master
.
Блоковые форматирующие объекты представляются как прямоугольные зоны, разделенные переносами строки и, возможно, дополнительными символами форматирования в содержании, которое предшествует или следует за блоковым форматирующим объектом. Блоки могут содержать в себе другие блоки, в этом случае внутренний блок также отделяется от внешнего переносом строки и, возможно, дополнительными символами форматирования. Блоковыми форматирующими объектами являются:
fo:block
fo:block-container
fo:table-and-caption
fo:table
fo:list-block
Элемент fo:block
является XSL-FO-эквивалентом свойства display: block
в CSS или элемента DIV
в HTML. Блоки могут входить в элемент fo:flow
, в другие элементы fo:block
или в элементы fo:static-content
. Каждый элемент fo:block
может содержать другие элементы fo:block
, другие блоковые элементы, например, fo:table
и fo:list-block
, а также внутри-строчные элементы, такие, как fo:inline
и fo:page-number
. Блоковые элементы могут также содержать простой текст, например:
<fo:block>The Periodic Table, Page <fo:page-number/></fo:block>
Блоковые элементы обычно имеют атрибуты, описывающие свойства зоны и текстового форматирования. Свойства текстового форматирования по умолчанию наследуются всеми дочерними элементами блока.
В версии FOP 0.18.1 отсутствует поддержка элементов fo:block-container
и fo:table-and-caption
.
Внутри-строчные форматирующие объекты также представляются как прямоугольные зоны, которые могут содержать текст или другие внутри-строчные элементы. Однако, внутри-строчные зоны чаще всего составляются в строки, идущие слева направо. Когда строка заполняется, под ней начинается новая строка. Точный порядок, в котором размещаются внутри-строчные элементы, зависит от режима письма. Например, при работе с ивритом или арабским письмом, внутри-строчные элементы идут справа налево. К внутри-строчным форматирующим объектам относятся:
fo:bidi-override
fo:character
fo:external-graphic
fo:initial-property-set
fo:instream-foreign-object
fo:inline
fo:inline-container
fo:leader
fo:page-number
fo:page-number-citation
Версия FOP 0.18.1 не поддерживает элементы fo:bidi-override
, fo:initial-property-set
или fo:inline-container
.
Табличные форматирующие объекты являются XSL-FO-эквивалентами табличных свойств в CSS2. Однако, в XSL-FO работа с таблицами ведется более естественным образом, нежели в CSS. В основном, отдельная таблица является блоковым объектом, в то время как части таблицы не являются ни внутри-строчными ни блоковыми элементами. Тем не менее, полная таблица может быть превращена во внутри-строчный объект с помощью размещения ее в элементе fo:inline-container
.
Существует девять табличных форматирующих объектов XSL:
fo:table-and-caption
fo:table
fo:table-caption
fo:table-column
fo:table-header
fo:table-footer
fo:table-body
fo:table-row
fo:table-cell
Корневым элементом таблицы является либо элемент fo:table
либо элемент fo:table-and-caption
, который содержит элементы fo:table
и fo:caption
. Элемент fo:table
содержит элементы fo:table-header
, fo:table-body
и fo:table-footer
. Тело таблицы (элемент fo:table-body
) содержит элементы fo:table-row
, которые разбиваются элементами fo:table-cell
.
FOP 0.18.1 реализует ограниченную поддержку табличных форматирующих объектов и совсем не поддерживает элементы fo:table-and-caption
и fo:table-caption
.
Существует три "вне-строчных" форматирующих объекта:
fo:float
fo:footnote
fo:footnote-body
Вне-строчные форматирующие объекты "наплывают" на место имеющихся на странице внутри-строчных и блоковых объектов. На странице они не всегда располагаются между теми же элементами, что и в исходном XML-дереве форматирующих объектов.
FOP 0.18.1 не поддерживает fo:float
.