Книга: XSLT
Форматирующие свойства XSL-FO
Форматирующие свойства XSL-FO
Форматирующие свойства XSL-FO настраивают действия перечисленных в предыдущем разделе форматирующих объектов; работайте с ними в документах XSL-FO так же, как с атрибутами элементов. Например, вот как я установил семейство (family), размер (size) и насыщенность (weight;) шрифта для текста в блоке:
<fo:block color="blue" font-family="Times"
font-size="36pt" font-weight="bold">
Hello from XSL-FO!
</fo:block>
Полный список свойств XSL-FO и их описание можно найти по адресу www.w3.org/TR/xsl/slice7.html. Многие свойства XSL-FO унаследованы из спецификации для каскадных таблиц стилей версии 2, CSS2, которую вы можете найти по адресу www.w3.org/TR/REC-CSS2.
В следующем списке перечислен ряд наиболее распространенных свойств XSL-FO. Полный список свойств (весьма длинный) приведен в Приложении Б. В списке используется следующий синтаксис, соответствующий спецификации XSL-FO:
• <>
обозначает единицы значений (см. таблицу 11.1) или свойства (например, <color>), которые уже были определены;
• |
означает вариант выбора, использовать можно только один из них;
• ||
означает вариант выбора, можно использовать один или несколько вариантов в любом порядке;
• []
означает групповые инструкции, вычисляемые во многом так же, как и математические выражения;
• *
означает, что предыдущий терм может встречаться ноль или более раз;
• +
означает, что предыдущий терм может встречаться один или более раз;
• ?
означает, что предыдущий терм необязателен;
• {}
окружают пары чисел, задающие минимальное и максимальное число раз встречи терма (как в {1, 4});
Во многих свойствах XSL-FO определен определенный формат для присваиваемых им значений, как, например <color>
или <angle>
, — эти форматы и их описание перечислены в табл. 11.1.
Таблица 11.1. Форматы спецификации XSL-FO
Формат | Описание |
---|---|
<absolute-size> | Абсолютные размеры шрифта; могут быть xx-small, x-small, small (маленький), medium (средний), large (крупный), x-large, xx-large |
<angle> | Углы; могут измеряться в deg (градусах), grad (градах) или rad (радианах) |
idctlpar<border-style> | Граница прямоугольника, может принимать значения none (нет), dotted (пунктиром), dashed (штрихами), solid (непрерывная), double (двойная), groove (канавкой), ridge (с толстой кромкой), inset (вложенная) или outset (вынесенная) |
<border-width> | Устанавливает ширину границы; может принимать значения thin (тонкая), medium (средняя), thick (толстая) или конкретного размера |
<color> | Цвет; может быть задан предопределенным значением цвета или тройным цветовым значением RGB, как в HTML, — например, «FFFFFF» для белого цвета |
<country-language> | Устанавливается в значение <language> (см. <language>) |
<family-name> | Название семейства шрифтов — такого, как Arial, Times New Roman или Courier |
<frequency> | Значения частоты; единицами измерения могут быть Hz (Гц) или KHz (кГц) |
<generic-family> | Обобщенные названия шрифтов, применяемых в качестве последней попытки, если браузер не может найти определенный шрифт. Например, serif (браузер должен выбрать шрифт serif), sans-serif (браузер должен выбрать семейство sans-serif) и monospace (браузер должен выбрать моноширинный шрифт) |
<generic-voice> | Звук голоса; может быть male (мужской), female (женский) или child (детский) |
<integer> | Стандартные целые значения |
<keep> | Контекстно-зависимое свойство; принимает значение Auto, для того чтобы не удерживать вместе ограничения, или Always для жесткого удержания ограничений вместе. Дополнительная информация приведена в спецификации XSL |
<language> | Определитель языка, соответствующий спецификации RFC1766 (которую можно найти по адресу www.w3.org/TR/xsl/sliceD.html#RFC1766) |
<length> | Длина; может начинаться с + или -, за которыми следует число. Число может содержать десятичную точку, за которой следует идентификатор единиц, принимающий значения em (размер шрифта соответствующего шрифта), ex (x-height, высота шрифта), рх (пикселов, pixel, определяется устройством просмотра), pt (пунктов, point, 1/72 дюйма), in (дюймов, inch), cm (сантиметров), mm (миллиметров) или pc (пик, pica, 1/6 дюйма) |
<length-bp-ip-direction> | Задает расстояние, разделяющее смежные границы ячейки в направлении размещения строк. Дополнительная информация приведена на www.w3.org/TR/xsl/slice7.html |
<length-conditional> | Составное значение, задающее ширину и возможный тип передней границы. Дополнительная информация приведена на www.w3.org/TR/xsl/slice7.html#pr-section |
<length-range> | Определяет диапазон длины, как определено в спецификации XSL |
<margin-width> | Может принимать значения <length>, <percentage> или auto. Работа значения auto зависит от контекста, подробности приведены на www.w3.org/TR/REC-CSS2/visudet.html#Computing_widths_and_margins |
<number> | Число, может включать знак и десятичную точку |
<padding-width> | Устанавливается в значение <length> |
<percentage> | Число, которое может содержать знак, за которым следует знак процента (%) |
<relative-size> | Размер шрифта относительно родительского элемента, может быть Larger (больше) или Smaller (меньше) |
<shape> | Пока может задавать только прямоугольник (shape — фигура), как, например: rect(<top> <right> <bottom> <left>) |
<space> | Задает минимальное, оптимальное и максимальное значения для пробела. Подробности см. на www.W3.org/TR/xsl/slice4.html#spacecond |
<specific-voice> | Задает определенный голос. Подробности см. на www.w3.org/TR/REC-CSS2/aural.html#propdef-voice-family |
<time> | Единицы времени, указанные как число, за которым сразу же следует ms (миллисекунды) или s (секунды) |
<uri-specification> | Uniform Resource Indicator (URI); web-адрес элемента страницы такого, как рисунок |
Примите также к сведению, что свойства XSL-FO, как и свойства CSS2, могут принимать значение «inherit», что означает, что значение свойства должно быть унаследовано от его родительского элемента.
В следующем списке перечислены наиболее распространенные свойства XSL-FO. Полный список приведен в Приложении Б.
• absolute-position
. Определяет, является ли позиция элемента абсолютной. Устанавливается в auto | absolute | fixed | inherit
;
• background
. Свойство для быстрой установки сразу всех отдельных свойств заднего фона (background-color
, background-image
, background-repeat
, background-attachment
и background-position
). Устанавливается в [ <background-color> || <background-image> || <background-repeat> || <background-attachment> || <background-position> ] | inherit
;
• background-attachment
. Определяет, будет ли прокручиваться задний фон. Устанавливается в scroll | fixed | inherit
;
• background-color
. Задает цвет заднего фона элемента. Устанавливается в <color> | transparent | inherit
;
• background-image
. Задает рисунок заднего фона элемента. Устанавливается в <uri-specification> | none | inherit
;
• background-repeat
. Определяет, может ли рисунок заднего фона располагаться мозаикой, и если да, то каким образом. Устанавливается в repeat | repeat-x | repeat-y | no-repeat | inherit
;
• border
. Свойство для быстрой установки одинаковых ширины, цвета и стиля всех четырех границ (верхней, нижней, левой и правой) прямоугольника. Устанавливается в [ <border-width> || <border-style> || <color> ] | inherit
;
• border-after-color
. Задает цвет задней границы области. Устанавливается в <color> | inherit
;
• border-after-style
. Задает стиль задней границы. Устанавливается в <border- style> | inherit
;
• border-after-width
. Задает ширину задней границы. Устанавливается в <border-width> | <length-conditional> | inherit
;
• border-before-color
. Задает цвет передней границы. Устанавливается в <color> | inherit
;
• border-before-style
. Задает стиль передней границы. Устанавливается в <border-style> | inherit
;
• border-before-width
. Задает ширину передней границы. Устанавливается в <border-width> | <length-conditional> | inherit
;
• border-bottom
. Свойство для быстрой установки ширины, стиля и цвета нижней границы области блока или встроенной области. Устанавливается в [ <border-top-width> || <border-style> || <color> ] | inherit
;
• border-bottom-color
. Задает цвет нижней границы. Устанавливается в <color> | inherit
;
• border-bottom-style
. Задает стиль нижней границы. Устанавливается в <border-style> | inherit
;
• border-bottom-width
. Задает ширину нижней границы. Устанавливается в <border-width> | inherit
;
• border-collapse
. Задает модель границы таблицы. Устанавливается в collapse | separate | inherit
;
• border-color
. Задает цвет сразу всех четырех границ. Устанавливается в <color>{1,4} | transparent | inherit
;
• border-end-color
. Задает цвет конечной границы. Устанавливается в <color> | inherit
;
• border-end-style
. Задает стиль конечной границы. Устанавливается в <border-style> | inherit
;
• border-end-width
. Задает ширину конечной границы. Устанавливается в <border-width> | <length-conditional> | inherit
;
• border-left
. Свойство для быстрой установки одновременно ширины, стиля и цвета левой границы. Устанавливается в [ <border-top-width> || <border-style> || <color> ] | inherit
;
• border-left-color
. Задает цвет левой границы. Устанавливается в <color> | inherit
;
• border-left-style
. Задает стиль левой границы. Устанавливается в <border-style> | inherit
;
• border-left-width
. Задает ширину левой границы. Устанавливается в <border-width> | inherit
;
• border-right
. Свойство для быстрой установки одновременно ширины, стиля и цвета правой границы. Устанавливается в [ <border-top-width> || <border-style> || <color> ] | inherit
;
• border-right-color
. Задает цвет правой границы. Устанавливается в <color> | inherit
;
• border-right-style
. Задает стиль правой границы. Устанавливается в <border-style> | inherit
;
• border-right-width
. Задает ширину правой границы. Устанавливается в <border-width> | inherit
;
• border-spacing
. Задает расстояние между смежными границами ячейки. Устанавливается в <length> <length>? | inherit
;
• border-start-color
. Задает цвет начальной границы. Устанавливается в <color>
;
• border-start-style
. Задает стиль начальной границы. Устанавливается в <border-style> | inherit
;
• border-start-width
. Задает ширину начальной границы. Устанавливается в <border-width> | <length-conditional> | inherit
;
• border-style
. Задает стиль четырех границ. Устанавливается в <border-style> {1,4} | inherit
;
• border-top
. Свойство для быстрой установки одновременно ширины, стиля и цвета верхней границы области блока или встроенной области. Устанавливается в [ <border-top-width> || <border-style> || <color> ] | inherit
;
• border-top-color
. Задает цвет верхней границы. Устанавливается в <color> | inherit
;
• border-top-style
. Задает стиль линии границы прямоугольника (непрерывная, двойная, штриховая и т.д.);
• border-top-width
. Задает ширину верхней границы. Устанавливается в <border-width> | inherit
;
• border-width
. Свойство для быстрой установки одновременно свойств border-top-width
, border-right-width
, border-bottom-width
и border-left-width
. Устанавливается в <border-width>{1,4} | inherit
;
• bottom
. Определяет, насколько нижний край содержимого прямоугольника (box) смещен вверх от нижней границы содержащего прямоугольник блока. Устанавливается в <length> | <percentage> | auto | inherit
;
• character
. Задает вставляемый символ Unicode. Устанавливается в <character>
;
• color
. Задает цвет переднего фона текста элемента. Устанавливается в <color> | inherit
;
• column-count
. Задает число столбцов в области. Устанавливается в <number> | inherit
;
• column-number
. Устанавливает номер столбца для ячеек таблицы. Устанавливается в <number>
;
• column-width
. Задает ширину такого объекта, как внешняя графика. Устанавливается в auto | scale-to-fit | <length> | <percentage> | inherit
;
• float
. Определяет, будет ли прямоугольник прижат влево, вправо или вообще не будет прижат. Устанавливается в before | start | end | left | right | none | inherit
;
• flow-name
. Задает имя потока (flow). Устанавливается в <name>
;
• font
. Свойство для быстрого задания одновременно свойств font-style
, font-variant
, font-weight
, font-size
, line-height
и font-family
. Устанавливается в [ [ <font-style> || <font-variant> || <font-weight> ]? <font-size> [ / <line-height>]? <font- family> ] | caption | icon | menu | message-box | small-caption | status-bar | inherit
;
• font-family
. Задает список имен семейств шрифтов и/или обобщенных имен семейств в порядке предпочтения. Устанавливается в [[ <family-name> | <generic-family> ],]* <family-name> | <generic-family>] | inherit
;
• font-size
. Задает размер шрифта. Устанавливается в <absolute-size> | <relative-size> | <length> | <percentage> | inherit
;
• font-style
. Задает стиль шрифта. Устанавливается в normal | italic | oblique | backslant | inherit
;
• font-variant
. Выбирает шрифты, имеющие строчные и прописные буквы (bicameral fonts). Устанавливается в normal | small-caps | inherit
;
• font-weight
. Задает насыщенность шрифта. Устанавливается в normal | bold | bolder | lighter | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | inherit
;
• format
. Формат XSLT. Устанавливается в <string>
;
• grouping-separator
. Разделитель групп разрядов формата XSLT. Устанавливается в <character>
;
• grouping-size
. Размер группы формата XSLT. Устанавливается в <number>
;
• height
. Задает высоту содержимого прямоугольников, создающихся элементами уровня блока и замещенными элементами. Устанавливается в <length>
| <percentage>
| auto
| inherit
;
• initial-page-number
. Задает начальный номер страницы. Устанавливается в auto | auto-odd | auto-even | <number> | inherit
;
• left
. Определяет, насколько левый край содержимого прямоугольника (box) смещен вправо от левой границы содержащего прямоугольник блока. Устанавливается в: <length> | <percentage> | auto | inherit
;
• linefeed-treatment
. Определяет способ обработки символов перевода строки. Устанавливается в ignore | preserve | treat-as-space | treat-as-zero-width-space | inherit
;
• line-height
. Задает минимальную высоту каждого созданного встроенного прямоугольника. Устанавливается в normal | <length> | <number> | <percentage> | <space> | inherit
;
• margin
. Свойство для быстрого задания одновременно свойств полей margin-top
, margin-right
, margin-bottom
и margin-left
. Устанавливается в <margin-width> {1,4} | inherit
;
• margin-bottom
. Задает нижнее поле прямоугольника. Устанавливается в <margin-width> | inherit
;
• margin-left
. Задает левое поле прямоугольника. Устанавливается в <margin-width> | inherit
;
• margin-right
. Задает правое поле прямоугольника. Устанавливается в <margin-width> | inherit
;
• margin-top
. Задает верхнее поле прямоугольника. Устанавливается в <margin-width> | inherit
;
• master-name
. Задает или выбирает шаблон (master). Устанавливается в <name>
;
• number-columns-spanned
. Задает число столбцов, занимаемых ячейкой таблицы. Устанавливается в <number>
;
• number-rows-spanned
. Задает число строк, занимаемых ячейкой таблицы. Устанавливается в <number>
;
• page-break-after
. То же, что и свойство CSS2 с тем же именем. Устанавливается в auto | always | avoid | left | right | inherit
;
• page-break-before
. To же, что и свойство CSS2 с тем же именем. Устанавливается в auto | always | avoid | left | right | inherit
;
• page-height
. Задает высоту страницы. Устанавливается в auto | indefinite | <length> | inherit
;
• page-width
. Задает ширину страницы. Устанавливается в auto | indefinite | <length> | inherit
;
• position
. Задает используемую схему размещения. Устанавливается в static | relative | absolute | fixed | inherit
;
• relative-position
. То же, что и свойство CSS2 с тем же именем. Устанавливается в static | relative | inherit
;
• right
. Определяет, насколько край содержимого прямоугольника (box) смещен влево от правой границы содержащего прямоугольник блока. Устанавливается в <length> | <percentage> | auto | inherit
;
• score-spaces
. Определяет, следует ли применять свойство text-decoration
к пробелам. Устанавливается в true | false | inherit
;
• space-treatment
. Определяет способ обработки пробелов и других символов-разделителей, за исключением символов перевода строки. Устанавливается в ignore | preserve | ignore-if-before-linefeed | ignore-if-after-linefeed | ignore-if-surrounding-linefeed | inherit
;
• span
. Определяет, нужно ли поместить объект уровня блока в текущий столбец или растянуть его на все столбцы в области. Устанавливается в none | all | inherit
;
• src
. Задает ссылку URI, определяющую внешний ресурс. Устанавливается в <uri-specification> | inherit
;
• start-indent
. Определяет расстояние от начального края прямоугольника содержимого области, содержащей блок, до начального края прямоугольника содержимого области этого блока. Устанавливается в <length> | inherit
;
• starts-row
. Определяет, начинает ли эта ячейка строку. Устанавливается в true | false
;
• text-align
. Определяет способ выравнивания встроенного содержимого блока. Устанавливается в start | center | end | justify | inside | outside | left | right | <string> | inherit
;
• text-decoration
. Задает параметры оформления, добавляемого тексту элемента. Устанавливается в none | [ [ underline | no-underline] || [ overline | no-overline ] || [ line-through | no-line-through ] || [ blink | no-blink ] ] | inherit
;
• text-indent
. Определяет выравнивание первой строки текста в блоке. Устанавливается в <length> | <percentage> | inherit
;
• text-shadow
. Задает разделенный запятыми список теневых эффектов, которые нужно применить к тексту элемента. Устанавливается в none | <color> || <length> <length> <length>? ,]* <color> || <length> <length> <length>?] | inherit
;
• top
. Определяет, насколько край содержимого смещен ниже верхнего края содержащего его блока. Устанавливается в <length> | <percentage> | auto | inherit
;
• vertical-align
. Определяет вертикальное расположение. Устанавливается в baseline | middle | sub | super | text-top | text-bottom [ <percentage> | <length> | top | bottom | inherit
;
• visibility
. Определяет, будут ли отображены генерируемые элементом прямоугольники. Устанавливается в visible | hidden | collapse | inherit
;
• white-space
. Определяет способ обработки символов-разделителей (white-space) внутри элемента. Устанавливается в normal | pre | nowrap | inherit
;
• white-space-collapse
. Задает способ обработки последовательных символов-разделителей. Устанавливается в false | true | inherit
;
• width
. Задает ширину содержимого прямоугольников, созданных элементами уровня блока и замененными элементами. Устанавливается в <length> | <percentage> | auto | inherit
;
• wrap-option
. Определяет наличие оболочки строк форматирующего объекта. Устанавливается в no-wrap | wrap | inherit
.
Не все свойства применимы ко всем объектам XSL-FO. В этой и следующей главах я буду явно перечислять свойства, применимые к используемым мной объектам. Заметьте также, что пока что ни в одном процессоре XSL-FO не реализованы все эти свойства.
Мы вкратце рассмотрели структуру XSL-FO, теперь пора перейти к практике: сейчас мы подробно рассмотрим работу примера.
- Форматирование XSL
- Форматирующие объекты XSL-FO
- Форматирующие свойства XSL-FO
- Форматирование документа XML
- Преобразование в XSL-FO при помощи таблицы стилей XSLT
- Создание корня документа:
- Создание схемы набора шаблонов:
- Создание шаблона страницы:
- Создание областей
- Создание последовательностей страниц:
- Создание объектов потока:
- Создание содержимого уровня блока:
- Создание таблиц
- Создание таблиц:
- Создание столбцов таблицы:
- Создание тел таблицы:
- Создание строк таблицы:
- Создание ячеек таблицы:
- Форматирующие объекты XSL-FO
- Элемент xsl:number
- XSLT
- Глава 11 Применение XSLT для создания документов XSL-FO
- Приложение Б Форматирующие свойства XSL-FO
- 11.2. СВОЙСТВА ПРОГРАММНОГО ОБЕСПЕЧЕНИЯ
- Использование отдельных процессоров XSLT
- 4. Свойства унарных операций
- 3. Свойства бинарных операций
- Ключевые свойства форм
- Глава 12 Документы XSL-FO
- Элемент xsl:param