XSLT — страница 112 из 124

 If you'd like to see some images, click

here

.

Пока в XSL-FO реализованы только обычные ссылки (basic link), как показано в примере. Но если вы знакомы со спецификациями XML для XPointer и XLink, вам следует ожидать в будущем значительного развития в этой области.

Создание колонок

При помощи XSL-FO можно разбить текст на колонки. Создать колонки несложно, нужно только воспользоваться свойствами

column-count
и
column-gap
элемента
и предоставить все остальное процессору XSL-FO.

Давайте рассмотрим пример,

columns.fo
. Чтобы разбить текст на две колонки с расстоянием в четверть дюйма между ними, я установил свойство
column-count
в «2», а свойство
column-gap
в «0.25in»:

   margin-bottom="10mm" margin-top="10mm" page-width="300mm"

   page-height="400mm" master-name="page">

    column-count="2" column-gap="0.25in"/>

 .

 .

 .

Теперь осталось только вывести в этих колонках какой-либо текст; заметьте, что я также создаю заголовок при помощи элемента

, о котором будет еще сказано в следующем разделе (листинг 12.7).

Листинг 12.7. columns.fo

   margin-bottom="10mm" margin-top="10mm" page-width="300mm"

   page-height="400mm" master-name="page">

    column-count="2" column-gap="0.25in"/>

    font-family="sans-serif" line-height="48pt">

    Creating Columns

    space-after="15pt">

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

    Sample Text. Sample Text. Sample Text. Sample Text. Sample Text.

Результат обработки этого документа,

columns.pdf
, показан на рис. 12.7.

Рис. 12.7. Создание колонок при помощи XSL-FO 

Последовательности страниц и нумерация страниц

Пока я использовал один и тот же шаблон страницы для всех страниц в рассмотренных нами документах XSL-FO. Если содержимое документа занимает более одной страницы, процессор XSL-FO использует тот же шаблон страницы для всех последующих страниц.

Но вам может быть нужно использовать различные шаблоны страницы в разных местах документа. Например, первую страницу нужно отформатировать отлично от следующих. При помощи XSL-FO это можно сделать.

Каждый элемент

, который я применял во всех примерах XSL-FO, ссылается либо на шаблон страницы, либо на элемент
. При помощи элемента
вы можете задать различные шаблоны страницы для последовательности страниц.

Пример

pages.fo
продемонстрирует вышесказанное. Я создам для первой страницы один простой шаблон страницы, «first» (первая), в котором текстовая часть смещена вниз страницы, для чего я устанавливаю свойство