69045

Форматирование документов XML с помощью XSL

Лекция

Информатика, кибернетика и программирование

Основными типами выходных документом при преобразованиях XSLT являются документы XML, текстовые документы и документы HTML. Конечным результатом преобразования является представление выходного документа в оформлении, которое зависит как от содержания документа, так и носителя, на который выводится документ...

Русский

2014-09-29

246 KB

4 чел.

 15

Лекция 4-11

5.3.21. Форматирование документов XML с помощью XSL 

 5.3.21.1. Средства форматирования документов XML

 5.3.21.2. Этапы форматирования документа XML

 5.3.21.3. Компоненты документа FO

5.3.22. Оформление страниц в XSL

 5.3.22.1. Структура страницы

 5.3.22.2. Элементы fo:declarations и fo:color-profile

 5.3.22.3. Элементы создания последовательности страниц

 5.3.22.4. Элементы fo:layout-master-set и fo:simple-page-master

 

5.3.22.5. Элементы fo:region-body, fo:region-before, fo:region-after, fo:region-start и fo:region-end 5.3.22.6. Элементы, формирующие последовательности страниц

5.3.23. Блоковые элементы XSL

 5.3.23.1. Элемент fo:block

 5.3.23.2. Элемент fo:block-container 

5.3.21. Форматирование документов XML с помощью XSL

5.3.21.1. Средства форматирования документов XML

Основными типами выходных документом при преобразованиях XSLT являются документы XML, текстовые документы и документы HTML. Конечным результатом преобразования является представление выходного документа в оформлении, которое зависит как от содержания документа, так и носителя, на который выводится документ (экрана дисплея, печатающего устройства и т.д.). Получение нужной структуры вывода документа (разметки страниц, параметров шрифтов и т.п.) называется форматированием документа. Для текстового документа средства форматирования крайне ограничены (фактически это только вставка в выводимый документ символов пробела и символов переноса строки). Для форматирования документа HTML можно использовать как элементы и атрибуты форматирования, определенные в спецификации HTML, так и средства каскадных таблиц стилей (CSS). Средства языка XML описывают только структуру документа, но не содержат никаких инструментов форматирования. Для форматирования документа XML можно использовать либо рассмотренное выше ассоциирование таблиц CSS с документами XML, либо выполнять форматирование документа с использованием средств языка Java (DOM-анализаторов). Первый способ предоставляет очень ограниченные средства форматирования (только для содержимого элементов документа XML), второй способ требует написания программ, которые к тому же можно использовать только для форматирования того документа, для которого эта программа написана.

Поэтому наиболее целесообразно использовать для форматирования документов специально разработанный консорциумом W3 расширенный язык таблиц стилей – XSL (eXtensible Stylesheet Language). Первая спецификация этого языка (версия 1.0) вышла в ноябре 2001 года. Следующая версия языка – XSL 1.1 утверждена консорциумом W3 в  декабре 2006 года. Далее рассматривается именно эта версия. Однако следует иметь в виду, что пока не все возможности этой версии реализованы в программных средствах, реализующих язык XSL.

В настоящее время начата разработка новой версии XSLXSL 2.0.

5.3.21.2. Этапы форматирования документа XML  

При форматировании документа XML в качестве начального этапа может быть выполнено преобразование с использованием языка XSLT (рис. 5.3.2), в результате которого преобразованный документ представляется в виде иерархической (древовидной) структуры или просто дерева.

Это дерево или дерево исходного документа (если этап преобразования отсутствует)  рассматривается программой форматирования документа XML – процессором XSL  как дерево элементов и атрибутов XML в пространстве имён "fo".

Процесс форматирования состоит из трех этапов.

На первом этапе форматирования дерево элементов и атрибутов XML преобразуется в дерево объектов форматирования (рис. 5.3.4).

Рис. 5.3.4. Первый этап форматирования: а) всего документа;

б) отдельного элемента и атрибута

 

Объект форматированияFO (Formatting Object) содержит сведения о разбивке на страницы, компоновке и стиле, которые будут применяться к содержимому этого объекта форматирования. С каждым объектом форматирования связан определенный набор свойств, которые  управляют форматированием этого объекта. В целом словарь объектов форматирования, поддерживаемых XSL (набор элементов в пространстве имен fo:) представляет собой набор типографских абстракций, необходимых для стилевого оформления документа XML.

В процессе выполнения первого этапа, называемого «объективизацией», узлы элементов исходного дерева преобразуются в   узлы объектов форматирования, а узлы атрибутов – в спецификации свойств.

Как часть этапа объективизации, символы результирующего дерева замещаются узлами элемента fo:character, определяющего отдельный символ. Для вставляемых в результирующее дерево внешних объектов (элемент fo:instream-foreign-object) и элементов-потомков объявлений (элемент fo:declarations) в пространствах имён, не являющихся именами XSL, «объективизация не выполняется.  Вместо этого объект, представляющий один из приведенных выше элементов,  указывает на подходящий узел в дереве элементов и атрибутов.

На втором этапе форматирования создается очищенное дерево объектов форматирования (рис. 5.3.5). Процесс очистки производит отображение из свойств в признаки (traits).

Это процесс состоит из:

  •  развёртывания сокращений (shorthand) в конкретные свойства;
  •  отображения соответствующих свойств;
  •  определения вычисленных значений (могут выполняться вычисления выражений, например, преобразования относительных единиц в абсолютные);
  •  учета обработки пробелов (свойство white-space-treatment) и перехода на новую строку (свойство linefeed-treatment);
  •  учета наследования свойств.

Рис. 5.3.5. Второй этап форматирования: а) всего документа;

б) отдельного элемента и свойства

На третьем этапе форматирования выполняется конструирование дерева геометрических  областей, называемого деревом областей (area tree) (рис. 5.3.6). Геометрические области образуют  последовательность из одной или нескольких страниц. Каждая геометрическая область содержит позицию на странице, описание компоновки области и может иметь фон, заполнение и рамку. Например, форматирование одиночного символа генерирует область, в которой размещается так называемый  глиф (glyph), используемый для визуального представления символа. Области могут вкладываться одна в другую.

При отображении берётся дерево областей, абстрактная модель представления (в терминах страницы и коллекции её областей) и производится вывод на определённый носитель: экран дисплея, лист бумаги или экран мобильного телефона.

Рис. 5.3.6. Третий этап форматирования: а) всего документа;

б) отдельного элемента и признака

5.3.21.3. Компоненты документа FO

Текстовый документ, содержащий объекты форматирования, т.е. элементы в пространстве имен fo:, называется документом FO. Этот документ описывает как общую компоновку отформатированного документа XML, так и его стилевое оформление.

Файл документа FO обычно имеет расширение .fo. Этапы преобразования и форматирования могут быть совмещены в одном файле с расширением .xsl (элементы форматирования в этом случае используются внутри конструкторов последовательностей).

При обработке документа FO выводимое содержимое исходного или преобразованного документа XML разбивается на страницы (окно Web-браузера также можно рассматривать как одну длинную страницу). Каждая страница содержит несколько областей. Существуют четыре первичных вида областей:

  •  регионы;
  •  блоковые области;
  •  строковые области;
  •  внутристроковые области.

Регион в XSL является контейнером самого верхнего уровня. Например, страница в книге может содержать верхний колонтитул, тело страницы и нижний колонтитул. Регионы содержат блоковые области.

Блоковая область представляет элемент уровня блока, например, абзац или список. Блоковая область может содержать анализируемые символьные данные, внутристроковые области,  строковые области и другие блоковые области,  которые последовательно размещаются в содержащей их блоковой области.

Строковая область представляет собой строку текста в блоковой области (например, пункт в списке). Строковая область может содержать внутристроковые области и внутристроковые пробелы.

Внутристроковые области представляют собой части строки: одиночный символ, ссылка в тексте или математическая формула. Внутристроковые области могут содержать другие внутристроковые области и текст.

Каждая область имеет прямоугольник содержимого (content-rectangle), в которой с помощью дочерних элементов выводится содержимое области, а также необязательные отступ и рамку (рис. 5.3.7). Прямоугольник, ограниченный внешней кромкой рамки, называется прямоугольником рамки (border-rectangle), а прямоугольник, ограниченный внешней кромкой отступа, называется прямоугольником отступа (padding-rectangle).

Рис. 5.3.7. Структура области в отформатированном документе

5.3.22. Оформление страниц в XSL

5.3.22.1. Структура страницы

Структура объектов форматирования для вывода страниц представлена на рис. 5.3.8.

Корневым элементом документа FO является элемент fo:root. Содержимым элемента является один элемент layout-master-set, 0 или 1 элементов declarations и один и более элементов page-sequence.

Элемент fo:root имеет единственное свойство media-usage. Это свойство используется для управления тем, как выбранный носитель вывода, специфицированный таблицей стилей, используется для представления страницы (страниц) и может принимать одно из следующих значений:

  •  "auto" – пользовательский   агент (например, Web-браузер) сам определяет, какое значение свойства (отличное от "auto") использовать (значение по умолчанию);
  •  "paginate" – последовательность страниц генерируется из объектов fo:page-sequence, которые являются потомками объекта fo:root;
  •  "bounded-in-one-dimension" – генерируется только одна страница на объект fo:page-sequence, причем  на первой используемой мастер-странице должно быть задано только "page-height" или только "page-width";
  •   "unbounded " – генерируется только одна страница на объект fo:page-sequence, причем  на первой используемой мастер-странице не должно быть задано ни "page-height", ни "page-width".

Элемент fo:root содержит один дочерний элемент fo:layout-master-set, необязательный элемент fo:declarations и один и более элементов fo:page-sequence.

 

Рис. 5.3.8.  Структура объектов форматирования для вывода страниц

5.3.22.2. Элементы fo:declarations и fo:color-profile

Элемент fo:declarations используется для группирования глобальных объявлений в таблице стилей. Этот элемент может содержать один или несколько элементов fo:color-profile. Для этого пустого элемента определены следующие свойства (в спецификации XSL атрибуты XML называются свойствами, поэтому в дальнейшем будет использоваться этот термин):

  •  srcURI для изображения или данных цветового профиля;
  •  color-profile-name – имя профиля цвета для внутренних ссылок;
  •  rendering-intent – профиль цвета, отличный от профиля по умолчанию (например, CMYK).

5.3.22.3. Элементы создания последовательности страниц

Элемент fo:page-sequence используется для определения создания последовательности или подпоследовательности страниц внутри документа: например, главы книги.

Содержимое этих страниц получается из потомков потока, состоящих из объектов потока: одного элемента fo:flow и любого количества элементов fo:static-content – дочерних элементов fo:page-sequence. Кроме того, на странице может быть элемент title. Структура этих страниц берется  из элементов fo:page-sequence-master или их дочерних элементов, на которые ссылается свойство master-reference в fo:page-sequence. Последовательности областей, возвращаемых каждым объектом потока – потомком fo:page-sequence, становятся потомками генерируемых страниц, как описано далее.

Для элемента fo:page-sequence определены следующие свойства:

  •  master-reference – определяет имя головной страницы, используемой для создания страниц последовательности;
  •  country – страна (двухсимвольный идентификатор страны, либо значение none, если страна не имеет значения, либо значение inherit – наследование из родительского элемента) (по умолчанию none);
  •  language – язык (идентификатор языка, либо значение none, если язык не имеет значения, либо значение inherit – наследование из родительского элемента) (по умолчанию none);
  •  format – строка преобразования номера страницы в строку (задается аналогично параметру строка-формата функции format-number() в XSLT);
  •  letter-value, grouping-separator и grouping-size – действуют для номера строки аналогично одноименным атрибутам элемента xsl:number в XSLT;
  •  id – уникальный идентификатор данного элемента;
  •  initial-page-number и force-page-count – устанавливают соответственно номер первой страницы в последовательности страниц и ограничения на количество страниц в последовательности страниц.

Свойство initial-page-number может принимать следующие значения:

  •  "auto" – начальное  значение будет установлено в 1, если в документе отсутствует предыдущий fo:page-sequence, иначе начальный номер будет больше, чем последний номер предшествующей последовательности;
  •  "auto-odd" – значение определяется тем же способом, что и для "auto", но, если значение четное, добавляется 1;
  •  "auto-even" – значение определяется тем же способом, что и для "auto", но, если значение нечетное, добавляется 1;
  •  "число" – положительное  целое число, определяющее начальный номер последовательности страниц.

Свойство force-page-count может принимать следующие значения:

  •  "auto" – делает последнюю страницу в этой последовательности страниц нечетной, если начальный номер следующей последовательности страниц – четный, и наоборот;
  •  "odd" – делает номера последовательности страниц четными;
  •  "even" – делает номера последовательности страниц нечетными;
  •  "end-on-odd" – делает последнюю страницу последовательности страниц четной;
  •  "end-on-even" – делает последнюю страницу последовательности страниц нечетной;
  •  "no-force"не делает номера последовательности страниц ни четными, ни нечетными.

Элемент fo:flow определяет последовательность областей, определяемых блоковыми элементами fo:block, fo:block-container, fo:table-and-caption, fo:table и fo:list-block – потомками данного элемента (может быть один или несколько таких элементов).

Единственным свойством элемента fo:flow является свойство flow-name, задающее уникальное имя в пределах последовательности fo:page-sequence.

Элемент fo:static-content содержит блоковый элемент или последовательность блоковых элементов, которые представлены в одном регионе или повторяется в одинаково именованных регионах на одной или более страницах в последовательности fo:page-sequence (обычно используется для повторяющихся или статичных верхних или нижних колонтитулов). Элемент также имеет свойство flow-name, задающее уникальное имя в пределах последовательности fo:page-sequence.

Элемент fo:title используется для связи заголовка с данной последовательностью страниц. Этот заголовок может использоваться интерактивным пользовательским агентом для идентификации страниц. Элемент может иметь либо строковое содержимое (#PCDATA), либо его содержимым могут быть внутристроковые элементы.

Для элемента  fo:title можно задавать позаимствованные из CSS2 общие свойства фона (background-attachment, background-color, background-image, background-repeat, background-position-horizontal  и background-position-vertical), рамки (border-before-color, border-before-style, border-before-width, border-after-color, border-after-style, border-after-width, border-start-color, border-start-style, border-start-width, border-end-color, border-end-style, border-end-width, border-top-color, border-top-style, border-top-width, border-bottom-color, border-bottom-style, border-bottom-width, border-left-color, border-left-style, border-left-width, border-right-color, border-right-style и border-right-width) и отступа (padding-before, padding-after, padding-start, padding-end, padding-top, padding-bottom, padding-left и padding-right).

Для элемента  fo:title могут быть заданы также  позаимствованные из CSS2 общие свойства шрифтов:  font-family, font-size, font-stretch, font-size-adjust, font-style, font-variant и font-weight, а также следующие свойства блока (позаимствованные из CSS2): margin-top, margin-bottom, margin-left и margin-right.

Внутристроковые свойства space-start и space-end представляют собой составные свойства, задающие минимальные, оптимальные и максимальные значения для пространства перед любыми областями, генерируемыми элементом, а также обусловленность и приоритетность для этого пространства. Минимальные (space-start.minimum и space-end.minimum), оптимальные (space-start.optimum и space-end.optimum) и максимальные значения (space-start.maximum и space-end.maximum) задаются в фиксированных единицах измерения или в процентах. Обусловленность (space-start.conditionality и space-end.conditionality) – это перечислимое значение, которое управляет воздействием свойства space в начале или в конце внутристроковой области. Возможные значения: retain и discard; условный спецификатор пространства – это тот, для которого данное значение – discard.

Приоритет (space-start.precedence и space-end.precedence) имеет значение целое число – значение приоритета или специальную лексему force.

По умолчанию свойства space-start и space-end для минимального, оптимального и максимального значение равны "0pt", для обусловленности – "discard" и для приоритета – "0".

Свойство color определяет цвет заголовка и задается также, как в CSS2 – указанием имени цвета (например, "red") или вызовом функции rgb() (например, "rgb(255,0,0)").

Свойства line-height и visibility, позаимствованные из CSS2, определяют соответственно высоту строки и видимость элемента.

5.3.22.4. Элементы fo:layout-master-set и fo:simple-page-master

Элемент fo:layout-master-set является оболочкой вокруг всех головных наборов, используемых в документе: головных наборов последовательности страниц, головных наборов страниц и головных наборов регионов. Его содержимым является один или несколько элементов simple-page-master, либо элементов page-sequence-master.

Элемент fo:layout-master-set не генерирует области непосредственно. Генерация страниц выполняется с помощью элемента fo:page-sequence.

Элемент fo:simple-page-master используется при генерации страниц и определяет структуру страницы. Его содержимым является один элемент region-body, а также необязательные элементы region-before, region-after, region-start и region-end (по одному элементу для каждого региона). Страница может подразделяться на регионы (до пяти): region-body, region-before, region-after, region-start и region-end.

Так же, как и его родительский элемент, fo:simple-page-master не генерирует области непосредственно, а используется элементом fo:page-sequence для генерации страниц.

Для элемента fo:simple-page-master определены общие свойства полей блока, а также следующие свойства: master-name, page-height, page-width, reference-orientation, writing-mode.

Общие свойства полей блока включают позаимствованные из спецификации CSS свойства полей документа: margin-top, margin-bottom, margin-left и margin-right, свойства start-indent и end-indent, а также свойства space-before и space-after.

Свойства start-indent и end-indent определяют расстояние от начального края или конечного края прямоугольника содержимого содержащей области reference-area до начального края или конечного края прямоугольника содержимого данной блоковой области. Значение задается либо в фиксированных единицах измерения (в качестве единиц измерения используются те же единицы, что и в CSS: cm – сантиметры, mm – миллиметры, in – дюймы, pt – пункты, pc – пики, px – пиксели и em – высота текущего шрифта), либо в процентах.

Свойства space-before и space-after представляют собой составные свойства, задающие минимальные, оптимальные и максимальные значения для пространства перед областями before и after, генерируемыми данным элементом, и обусловленность и приоритетность для этого пространства. Они задаются аналогично свойствам space-start и space-end элемента fo:title.

Свойство master-name задает уникальное для потомков набора fo:layout-master-set имя. На это имя последовательно ссылаются как на значение свойств элементов fo:single-page-master-reference, fo:repeatable-page-master-reference и fo:conditional-page-master-reference  при запросах этого элемента в процессе создания экземпляра страницы. Оно может использоваться также в объекте fo:page-sequence для задания набора, используемого при создании экземпляров страниц.

Свойства page-height и page-width определяют высоту и ширину страницы. Эти свойства могут иметь одно из следующих значений:

  •  "auto" – параметр определяется либо по размеру окна пользовательского агента, либо по размеру носителя (значение по умолчанию);
  •  "indefinite" – высота страницы определяется размером выводимого содержимого (высота и ширина страницы не могут иметь одновременно значение "indefinite");
  •  "размер" – определяет фиксированную высоту или ширину страницы в фиксированных единицах измерения;
  •  "inherit" – наследуется из вышележащего элемента.

Свойство reference-orientation определяет «вершину» для области содержимого по отношению к содержащей ее области. Это свойство имеет фиксированные значения "0" | "90" | "180 "| "270" | "-90" | "-180" | "-270" или "inherit". Числовые значения означают поворот области по отношению к содержащей ее области на заданное количество градусов по часовой стрелке (числа без знака) или против часовой стрелки (отрицательные числа).  По умолчанию, значение этого свойства равно "0".  

Свойство writing-mode определяет базовые режимы письма, используемые в различных языках. По умолчанию значение этого свойства "lr-tb": текст в строке записываются слева направо, а строки и блоки размещаются сверху вниз. Это свойство следует задавать только в тех случаях, когда используется другой порядок записи, например для японского или арабского языков.    

5.3.22.5. Элементы fo:region-body, fo:region-before, fo:region-after, fo:region-start и fo:region-end

Когда для генерации страницы используется элемент fo:simple-page-master, генерируется пара порт-просмотра/ссылка, состоящая из области порта просмотра и области ссылки на страницу. Область порта просмотра (page-viewport-area) представляет физические границы носителя вывода. Область ссылки на страницу (page-reference-area) представляет часть страницы, на которой предполагается разместить содержимое, т.е. область в рамках полей страницы.

Такие же пары генерируются и для дочерних элементов fo:simple-page-master: fo:region-body, fo:region-before, fo:region-after, fo:region-start и fo:region-end (это пустые элементы без содержимого).  

Расположение этих регионов на странице представлено на рис. 5.3.9

Рис. 5.3.9. Расположение регионов на странице

Для всех элементов регионов, так же как и для элемента fo:title,  можно задавать позаимствованные из CSS2 общие свойства фона, рамки  и отступа.

Кроме того, для всех элементов регионов определены свойства display-align, region-name, overflow, clip, reference-orientation и writing-mode.

Свойство display-align определяет вертикальное выравнивание региона. Допустимыми значениями этого свойства являются: "before" – выравнивание к верхнему краю, "after" – выравнивание  к нижнему краю, "center" – выравнивание по центру, "auto" – для регионов совпадает со значением "before" (значение по умолчанию).

Свойство region-name используется для идентификации региона внутри элемента fo:simple-page-master. Каждый регион имеет имя по умолчанию – это имя региона с префиксом "xsl-", например, "xsl-region-body". Региону можно присвоить любое другое имя (но не имя другого региона по умолчанию). Обычно такое присваивание выполняется, когда нужно отличить четные и нечетные страницы.

Позаимствованное из CSS2 свойство overflow определяет, как будет вести себя регион, когда он не помещается в отведенную ему область. Значение "visible" определяет, что регион будет «наползать» на другие регионы, значение "hidden" определяет, что содержимое региона будет усекаться, причем размер и форма усекаемого региона определяются свойством clip, значение "scroll" также  определяет, что содержимое региона будет усекаться, но должен использоваться механизм прокрутки и, наконец, значение "auto" (значение по умолчанию) определяется пользовательским агентом (обычно это значение совпадает со значением "scroll").

Значением свойства clip (также позаимствованного из CSS2) является вызов функции

"rect(сверху справа снизу слева)",

определяющей размер усечения (в пикселях) сверху, справа, снизу и слева.

Кроме описанных выше свойств, элементы fo:region-before, fo:region-after, fo:region-start и fo:region-end имеют общее свойство extent, определяющее (в фиксированных единицах длины или процентах) высоту или ширину региона (значение по умолчанию "0.0pt"), а элементы fo:region-before, fo:region-after имеют еще и свойство precedence, которое определяют порядок пересечения регионов в углах. Если это свойство имеет значение false (значение по умолчанию), то регионы start и end перекрывают соответствующий регион по углам, если true, то, наоборот, соответствующий регион перекрывает регионы start и end, как показано на предыдущем рисунке. 

Элемент fo:region-body имеет следующие дополнительные свойства:

  •  общие свойства полей блока, совпадающие с общими свойствами полей элемента fo:simple-page-master;
  •  свойство column-count – положительное целое число, определяющее количество столбцов в регионе (по умолчанию равно "1");
  •  свойство column-gap – определяет расстояние (в фиксированных единицах измерения или процентах) между столбцами в регионе (по умолчанию равно "12.0pt").

Пример использования регионов при определении четных и нечетных страниц документа:

<fo:layout-master-set>

 <fo:simple-page-master master-name="odd"

   page-height="29.7cm" page-width="21cm"

   margin-top="2.5cm" margin-bottom="2.5cm"

   margin-left="3cm" margin-right="1.5cm">

   <fo:region-body region-name="xsl-region-body"

     margin-top="1cm" margin-bottom="1cm"

     margin-left="1cm" margin-right="1cm"/>

   <fo:region-before extent="1cm"

     region-name="odd-before"/>

   <fo:region-after extent="1cm"/>

   <fo:region-start extent="1cm"/>

   <fo:region-end extent="1cm"/>

 </fo:simple-page-master>

 <fo:simple-page-master master-name="even"

   page-height="29.7cm" page-width="21cm"

   margin-top="2.5cm" margin-bottom="2.5cm"

   margin-left="1.5cm" margin-right="3cm">

   <fo:region-body

     margin-top="1cm" margin-bottom="1cm"

     margin-left="1cm" margin-right="1cm"/>

   <fo:region-before extent="1cm"

region-name="odd-before"/>

   <fo:region-after extent="1cm"/>

   <fo:region-start extent="1cm"/>

   <fo:region-end extent="1cm"/>

 </fo:simple-page-master>

</fo:layout-master-set>.

5.3.22.6. Элементы, формирующие последовательности страниц

Элемент fo:page-sequence-master и его дочерние элементы используются для генерации различных последовательностей страниц. Эти элементы не генерируют области  непосредственно, а используются элементом fo:page-sequence для генерации страниц.

Содержимым элемента fo:page-sequence-master является один или несколько элементов single-page-master-reference, repeatable-page-master-reference и repeatable-page-master-alternatives.

Свойство master-name элемента fo:page-sequence-master должно совпадать с одним  из уникальных имен, определенных в свойстве master-name наборов fo:layout-master-set.

Элемент fo:single-page-master-reference используется для формирования простейшей последовательности страниц, состоящей из одного экземпляра головной страницы.

Пустой элемент fo:repeatable-page-master-reference используется для формирования последовательности страниц, состоящей из повторяющихся экземпляров головной страницы.

Пустой элемент fo:repeatable-page-master-alternatives используется для формирования последовательности страниц, состоящей из повторяющихся экземпляров набора альтернативных головных страниц. Потомками этого элемента являются один или несколько элементов fo:conditional-page-master-reference.

Пустой элемент fo:conditional-page-master-reference используется для идентификации головной страницы при выполнении некоторого условия. Это позволяет использовать разные головные страницы, например, для четных и нечетных страниц, для первой страницы последовательности страниц или для пустых страниц.

Ссылка на значение master-name одного из наборов fo:layout-master-set задается в свойстве master-reference элементов fo:single-page-master-reference, fo:repeatable-page-master-reference и fo:conditional-page-master-reference  при запросах этого элемента в процессе создания экземпляра страницы.

Для элементов fo:repeatable-page-master-reference и fo:repeatable-page-master-alternatives можно задать свойство maximum-repeats, задающее максимальное количество страниц в последовательности. Это свойство может быть целым числом, большим или равным 0, либо иметь значение no-limit для неограниченного количества страниц (значение по умолчанию).

Пример использования элемента fo:simple-page-master-reference:

<fo:root>

<fo:layout-master-set>

<fo:simple-page-master master-name="single"

       page-height="12cm" page-width="10cm"

       margin-top="1.5cm" margin-bottom="1.5cm"

       margin-left="1cm" margin-right="1cm">

   <fo:region-body

       margin-top="1cm" margin-bottom="1cm"/>

</fo:simple-page-master>

<fo:page-sequence-master master-name="single-page">

   <fo:single-page-master-reference

       master-name="single"/>

</fo:page-sequence-master>

</fo:layout-master-set>

<fo:page-sequence master-name="single-page">

   <!--Содержимое -->

</fo:page-sequence>

</fo:root>.

Пример использования элемента fo:repeatable-page-master-reference:

<fo:root>

<fo:layout-master-set>

<fo:simple-page-master master-name="many"

page-height="12cm" page-width="10cm"

       margin-top="1.5cm" margin-bottom="1.5cm"

       margin-left="1cm" margin-right="1cm">

   <fo:region-body

       margin-top="1cm" margin-bottom="1cm"/>

</fo:simple-page-master>

<fo:page-sequence-master master-name="many-pages">

   <fo:repeatable-page-master-reference

       master-name="many" maximum-repeats="10"/>

</fo:page-sequence-master>

</fo:layout-master-set>

<fo:page-sequence master-name="many-pages">

<!--Содержимое -->

</fo:page-sequence>

</fo:root>.

Правило отбора в элементе fo:conditional-page-master-reference определяется значением свойства page-position: "first" (первая),  "last" (последняя), "rest" (остальные),  "any" любые (значение по умолчанию). Еще одно правило отбора может быть задано с помощью свойства odd-or-even, которое может иметь следующие значения: "odd" (нечетная страница), "even" (четная страница) или "any" (любая страница – значение по умолчанию). И, наконец последнее свойство blank-or-not-blank используется для генерации дополнительных пустых страниц. Это свойство может иметь следующие значения: "blank" (пустая страница должна быть сгенерирована, например, для поддержки чередования чётности страниц в начале или в конце последовательности страниц),  "not-blank" (страница должна быть сгенерирована, если она не пустая) и "any" (страница должна быть сгенерирована в любом случае – значение по умолчанию).

Пример использования элементов fo:repeatable-page-master-alternatives и fo:conditional-page-master-reference:

<?xml version="1.0" encoding="Windows-1251"?>

<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

    <fo:layout-master-set>

       <!-- layout for the first page -->

         <!-- Вывод для нечетных страниц -->

        <fo:simple-page-master master-name="odd"

           page-height="29.7cm" page-width="21.0cm"

           margin-top="2cm" margin-bottom="2cm"

          margin-left="3.5cm" margin-right="1.5cm">

  <fo:region-body

      margin-top="2cm" margin-bottom="2cm"/>

         </fo:simple-page-master>

           <!-- Вывод для четных страниц -->

         <fo:simple-page-master master-name="even"

           page-height="29.7cm" page-width="21.0cm"

           margin-top="2cm" margin-bottom="2cm"

         margin-left="1.5cm" margin-right="3.5cm">

  <fo:region-body

      margin-top="2cm" margin-bottom="2cm"/>

         </fo:simple-page-master>

             <fo:page-sequence-master master-name="chapter">

              <fo:repeatable-page-master-alternatives>

   <fo:conditional-page-master-reference

    master-name="odd"

    page-position="rest"

    odd-or-even="odd"/>

   <fo:conditional-page-master-reference

    master-name="even"

    page-position="rest"

    odd-or-even="even"/>

  </fo:repeatable-page-master-alternatives>

 </fo:page-sequence-master>

</fo:layout-master-set>

    <fo:page-sequence master-name="run1"

     initial-page-number="1">

 <fo:flow flow-name="xsl-region-body">

             <!--Содержимое -->

            </fo:flow>

    </fo:page-sequence>

</fo:root>.

5.3.23. Блоковые элементы XSL

В  XSL определено два элемента форматирования блокового уровня: fo:block и fo:block-container.

5.3.23.1. Элемент fo:block

Элемент обычно используется для форматирования параграфов, заголовков, колонтитулов, подписей к рисункам и таблицам и т.д.

Элемент может иметь либо строковое содержимое (#PCDATA), либо его содержимым могут быть внутристроковые элементы, либо вложенные блоковые элементы.

Свойство id определяет уникальный идентификатор элемента fo:block.

Для элемента fo:block, так же, как и для элемента fo:title, могут быть заданы общие свойства фона, рамки и отступа, а также общие свойства шрифта. Кроме того, для элемента могут быть заданы общие свойства полей блока (как и для элемента fo:simple-page-master).

Свойство hyphenate со значениями "true" или "false" разрешает или запрещает перенос слов в блоке. Свойство hyphenation-keep управляет переносом, выполняемым на последней строке, входящей в данную область reference-area. Значение "auto" задает режим переноса слова в конце любого региона (значение по умолчанию), значение "column" определяет, что обе части слова, разделённого для переноса, должны находиться в одном столбце, а значение "page" – что обе части слова, разделённого для переноса, должны находиться на одной странице. Свойство hyphenation-ladder-count определяет количество последовательных строковых областей с переносами, которые могут генерироваться форматировщиком в блоковой области. Значение "no-limit" определяет, что переносы выполняются на любом количестве последовательных строк, а значение целое – количество областей с переносами.

Свойство wrap-option определяет, будет ли выполняться перенос (свертку) строк, если строки длиннее, чем доступная ширина прямоугольника содержимого. Значение "no-wrap" запрещает сверку строк, а значение "wrap" – разрешает (это значение по умолчанию).   

Для элемента fo:block можно задать также свойство относительного позиционирования relative-position, а также свойства top, right, bottom и left из группы свойств абсолютного позиционирования. Эти свойства позаимствованы из CSS2, также как и свойства text-align, text-indent, line-height, color и visibility. Дополнительные свойства XSL text-align-last и last-line-end-indent задают отдельно форматирование и отступ для последней строки блока.

Свойство white-space-collapse со значениями "true" или "false" разрешает или запрещает нормализацию пробелов в блоке. Свойство white-space-treatment позволяет более детально управлять выводом пробельных символов (кроме символа перевода строки). Так, значение "ignore" удаляет пробельные символы, а значение "preserve" – сохраняет (значение по умолчанию). Значения "ignore-if-before-linefeed" и "ignore-if-after-linefeed" позволяют удалить пробелы до или после символа перевода строки. Значение "ignore-if-surrounding-linefeed" позволяет удалить пробелы и до и после символа перевода строки. Свойство linefeed-treatment управляет обработкой символа перевода строки. Так, значение "ignore" удаляет символы перевода строки, а значение "preserve". Значение "treat-as-space" преобразует символ перевода строки в пробел (значение по умолчанию), а значение "treat-as-zero-width-space" – в пробел нулевой ширины (символ Unicode с кодом 200B).

Два свойства break-before и break-after определяют разрыв перед блоком или после блока. Эти свойства могут иметь следующие значения: "auto" – разрыв не задан (значение по умолчанию), "page", "odd-page" и "even-page" – разрыв с переходом на новую страницу, на новую нечетную страницу и на новую четную страницу, "column" – разрыв с переходом на новую колонку.

Свойства keep-with-previous, keep-with-next и keep-together, наоборот, заставляют данный блок продолжать предыдущий блок или последующий блок продолжать данный блок, либо просто объединить два блока.  Эти свойства являются составными (уточнения: .within-line – в строке, .within-column – в колонке, .within-page – в странице). В качестве значения для этих свойств задается либо "auto" – условия отключены (значение по умолчанию), либо "always" – всегда включены, либо число –  включены с заданным приоритетом.

Свойства orphan и widows определяют минимальное число строк абзаца, которые должны оставаться внизу или вверху страницы. Значениями этих свойств являются положительные целые числа.

Свойство span со значениями "none" или "all" определяет, будет ли блок помещаться в текущий столбец региона или будет захватывать все столбцы региона.

Строковая область – это особый тип блоковой области, генерируемый тем же самым элементом, который генерирует и её родительский элемент. Строковые области не имеют рамок и заполнения и упаковываются внутри строковой области относительно начальной точки базовой линии, которая является точкой, определённой процессором XSL на start-edge прямоугольника содержимого строковой области, называемого прямоугольником размещения строки. Прямоугольник размещения строки и его компоненты представлены на рис. 5.3.10.

Рис. 5.3.10. Прямоугольник размещения строки и его компоненты

Прямоугольник размещения строки определяется значением свойства line-stacking-strategy: если задано  значение "font-height", прямоугольник размещения будет nominal-requested-line-rectangle, (т.е. выступающие элементы типа буквы N на рисунке учитываться не будут; если задано значение, прямоугольник размещения будет maximum-line-rectangle; и если задано значение "line-height" (значение по умолчанию) прямоугольник размещения будет определен так, чтобы быть наименьшим прямоугольником, включающим и nominal-requested-line-rectangle и все внутристроковые области с их краями.

Для значений "max-height" и "line-height"свойства line-stacking-strategy можно использовать свойство line-height-shift-adjustment,  управляющее обработкой областей, базовая линия которых сдвинута от общей базовой линии строковой области. Для этой характеристики могут быть заданы два значения: "consider-shifts" – при  вычислении прямоугольника размещения, базовые элементы сдвигов приняты во внимание (например, если строка содержит нижний индекс) и "disregard-shifts" – сдвиги базовой линии игнорируются.

Свойства text-altitude и text-depth задают изображенные на рисунке высоту и глубину шрифта. Значения этих свойств могут быть заданы либо в фиксированных единицах, либо в процентах. Кроме этого, может быть задано значение "use-font-metrics" – в этом случае высота и глубина подсчитывается на основании метрики используемого шрифта.

Последнее свойство intrusion-displace определяет стратегию перемещения при наличии вторжений в блоковую область других областей. Значение "block" задает, что начальная и конечная границы блока перемещается на наименьшее значение, которое гарантирует, что эти границы не пересекает никаких вторжений. Значения "line" и "auto" задают, что начальные и конечные границы строковых областей перемещаются настолько точно, что любые вторжения не пересекают прямоугольник содержимого строчной области (это значения по умолчанию).  Значение "indent" задает, что  начальные и конечные границы каждой строки внутри области блока, в которой применяется свойство, перемещается на, по меньшей мере, то же самое значение, на которое он сместился бы значением "line" этого свойства, и, кроме того, на величину, сохраняющую смещение относительно начальной или конечной границы любой другой строки, перемещённой под влиянием какого-либо вторжения, вызывающего перемещение текущей строки. Значение "none" отменяет перемещение при вторжении.

Пример использования элемента fo:block:

Вывод заголовка документа:

<fo:block font-size="14pt"

    font-family="Arial"

    line-height="20pt"

    color="navy"

    text-align="center"

    padding-top="10pt"

padding-bottom="10pt">

Список сообщений электронной почты</fo:block>.

В документ PDF будет выведено:

                                 

       

5.3.23.2. Элемент fo:block-container

Элемент fo:block-container используется для генерации блоковой области, содержащей обычно блоки текста с различными режимами письма. Кроме того, он может также использоваться с различными ориентациями для поворота своего содержимого.

Содержимым этого элемента является один или несколько блоковых элементов.

Для элемента fo:block-container, так же как и для элемента fo:block, определены общие свойства фона, рамки и отступа, общие свойства полей блока, а также свойства id, break-before, break-after, intrusion-displace, keep-with-previous, keep-with-next, keep-together и span.

Кроме того, могут быть заданы позаимствованные из CSS2 свойства абсолютного позиционирования: absolute-position, top, right, bottom и left.

Из CSS2 позаимствованы также свойства clip, overflow, width, height и z-index.

Свойства block-progression-dimension и inline-progression-dimension определяют увеличение размера прямоугольника размещения для каждого блока или внутристроковой области, генерируемой элементом. Увеличение можно указать в фиксированных единицах или в процентах (для минимального, максимального и оптимального значения). Кроме того, увеличение может иметь значение "auto" – в этом случае свойство не вводит никаких ограничений (значение по умолчанию).

Свойство display-align определяется аналогично соответствующему свойству для регионов.

Свойство reference-orientation и writing-mode определяются так же, как для элемента fo:simple-page-master.

Пример использования элемента fo:block-container:

<fo:block-container

background-color="yellow"

border-start-color="red"

border-start-style="solid"

border-start-width="6pt"

width="200pt"

height="100pt">

<fo:block font-size="14pt"

            font-family="Times New Roman"

             color="blue">

Первый параграф блока

</fo:block>

 <fo:block font-size="12pt"

            font-family="Times New Roman"

             color="green">

Второй параграф блока

</fo:block>

</fo:block-container>.

В документ PDF будет выведено:

.

 

Файл: file:///web/1/5fan/public_html/www/files/13/5fan_ru_69045_f567a04ff89e5ecf4fc173360fe7370e.doc   Создан: 2008-04-03T12:27:00Z Модифицирован: 2008-04-03T12:27:00Z     Автор:


fo:root

fo:layout-master-set

fo:declarations

fo:page-sequence

fo:simple-page-master

fo:page-sequence-master

fo:color-profile

o:title

fo:static-content

Region-after

Дерево преобразования или исходного документа  

Дерево объектов  

форматирования и свойств

Элемент

fo:block 

Атрибуты

start-indent="2em"

font-size="20pt"

Объективизация

Объективизация

Свойства

start-indent="2em"

font-size="20pt"

Объект форматирования

fo:block 

а)

б)

Дерево объектов  

форматирования и свойств

Дерево объектов  

форматирования и признаков

Очистка

Объект форматирования

fo:block 

Свойства

start-indent="2em"

font-size="20pt"

Очистка

Объект форматирования

fo:block 

Признаки

start-indent="40pt"

font-size="20pt"

а)

б)

Создание дерева областей

Объект форматирования

fo:block 

Признаки

start-indent="2em"

font-size="20pt"

Создание дерева областей

Область

block-area 

Признаки

start-indent="40pt"

font-size="20pt"

а)

б)

Дерево объектов  

форматирования и признаков

Визуализированные  

признаки дерева областей

fo:region-body

fo:region-before

fo:region-after

fo:region-start

fo:region-end

fo:single-page-master-reference

fo:repeatable-page-master-reference

fo:repeatable-page-master-alternatives

fo:conditional-page-master-reference

Region-before

fo:flow

Region-start

Region-end

Region-body

Прямоугольник рамки

Прямоугольник отступа

Прямоугольник содержимого


 

А также другие работы, которые могут Вас заинтересовать

46316. Особенности проектирования приспособлений для станков с ЧПУ, обрабатывающих центров и гибких производственных систем 128 KB
  Особенности проектирования приспособлений для станков с ЧПУ обрабатывающих центров и гибких производственных систем К станочным приспособлениям применяемых на станках с ЧПУ предъявляются следующие требования: а высокая точность и жесткость обеспечивающая требуемую точность обработки и максимальное использование мощности станка; б полное базирование как заготовки так и приспособления относительно начала координат станка; в возможность подхода инструмента ко всем обрабатываемым поверхностям; г возможность смены заготовки вне рабочей...
46317. Прочность деталей приспособлений 84.5 KB
  Прочность деталей приспособлений Прочность одно из основных требований предъявляемых к деталям и приспособлениям в целом. Прочность деталей может рассматриваться по коэффициентам запаса или по номинальным допускаемым напряжениям. С помощью расчета деталей элементов приспособлений на прочность можно решать две задачи: а проверку на прочность уже существующих деталей с определенными размерами сечений путем сравнения фактических напряжений моментов сил с допускаемыми проверочный расчет; б определение размеров сечений деталей ...
46318. Экономическая эффективность приспособлений 85.5 KB
  Процессы проектирования станочных приспособлений представляют собой одну из разновидностей информационных процессов, имеющих место в машиностроительном производстве. Они в разной степени проявляются при разработке универсальных, универсально-переналаживаемых и специальных приспособлений
46319. Разработка схемы базирования заготовки. Выбор установочных элементов 199.5 KB
  Анализ исходных данных и формулирование служебного назначения приспособления В качестве исходных данных конструктор приспособления должен иметь: чертеж заготовки и детали с техническими требованиями их приемки; операционные чертежи на предшествующую и выполняемую операции; операционные карты технологического процесса обработки данной детали. Служебное назначение приспособления – это максимально уточненная и четко сформулированная задача для решения которой оно предназначено. Классификация технологической оснастки По целевому назначению...
46320. Расчет точности базирования заготовок деталей 94 KB
  Погрешность базирования при установке вала на призму Рис. Схема для определения погрешностей базирования при установки вала уста на призму. При обработке вала в призме могут быть могут быть следующие измерительные базы для размера h. Измерительные базы при обработке вала в призме.
46321. Зажимные элементы приспособлений 224.5 KB
  При обработке партии таких деталей требуется получить высокую концентричность наружных и внутренних поверхностей и заданную перпендикулярность торцов к оси детали. При зажиме обрабатываемой детали на оправке осевая сила Q на штоке механизированного привода вызывает между торцами шайбы 4 уступом оправки и обрабатываемой деталью 3 момент от силы трения больший чем момент Мрез от силы резания Рz. Где: коэффициент запаса; Рz вертикальная составляющая сила резания Н кгс; D наружный диаметр поверхности обрабатываемой детали мм; D1 ...
46322. Разработка компоновки приспособления 117.5 KB
  Разработка компоновки приспособления Разработку общего вида приспособления начинают с нанесения на лист контуров заготовки. В зависимости от сложности приспособления вычерчивают несколько проекций заготовки. Разработку общего вида ведут методом последовательного нанесения отдельных элементов приспособления вокруг контуров заготовки. Более этого вычерчивают корпус приспособления который объединяет все перечисленные выше элементы.
46323. Составление расчетной схемы и исходного управления для расчета зажимного усилия Рз 202 KB
  Составление расчетной схемы и исходного управления для расчета зажимного усилия Рз Закрепление заготовки производится с помощью зажимных устройств различных конструкций. Принцип действия и конструкцию зажимного устройства конструктор выбирает исходя из конкретных условий выполнения операций: типа производства величин сил резания действующих на заготовку при выполнении операций конструктивных особенностей заготовки типа станка. Выбор коэффициента трения f заготовки с опорными и зажимными элементами. Выбор коэффициента трения заготовки с...
46324. Составление расчетной схемы и исходного уравнения для расчета исходного усилия Ри 359 KB
  Наряду с изменением величины исходного усилия силовой механизм может также изменять его направление, разлагать на составляющие и совместно с контактными элементами обеспечивать приложение зажимного усилия к заданной точке. Иногда силовые механизмы выполняют роль самотормозящего элемента, препятствуя раскреплению заготовки при внезапном выходе из строя привода.