Выбрать главу

Рис. 12.6. Поддержка ссылок в XSL-FO 

В данном случае создать ссылку очень просто — достаточно установить свойство external-destination элемента <fo:basic-link> в «graphics.pdf»:

<fo:block font-size="24pt">

 If you'd like to see some images, click

 <fo:basic-link external-destination="graphics.pdf">

  .

  .

  .

 </fo:basic-link>.

</fo:block>

Теперь осталось только добавить подчеркнутый текст, чтобы пользователь мог щелкнуть по нему и перейти к новому документу. Конечно, не обязательно выделять текст подчеркиванием; но иначе ничто не будет указывать на то, что текст является ссылкой, — за исключением указателя мыши, который изменит форму при перемещении над текстом. Подчеркнутый текст можно добавить следующим образом:

<fo:block font-size="24pt">

 If you'd like to see some images, click

 <fo:basic-link external-destination="graphics.pdf">

  <fo:inline text-decoration="underline">here</fo:inline>

 </fo:basic-link>.

</fo:block>

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

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

При помощи XSL-FO можно разбить текст на колонки. Создать колонки несложно, нужно только воспользоваться свойствами column-count и column-gap элемента <fo:region-body> и предоставить все остальное процессору XSL-FO.

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

<?xml version="1.0" encoding="UTF-8"?>

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

 <fo:layout-master-set>

  <fo:simple-page-master margin-right="20mm" margin-left="20mm"

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

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

   <fo:region-body margin-top="3cm" margin-bottom="2cm"

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

   <fo:region-before extent="3cm"/>

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

  </fo:simple-page-master>

 </fo:layout-master-set>

 .

 .

 .

Теперь осталось только вывести в этих колонках какой-либо текст; заметьте, что я также создаю заголовок при помощи элемента <fo:static-content>, о котором будет еще сказано в следующем разделе (листинг 12.7).

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

<?xml version="1.0" encoding="UTF-8"?>

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

 <fo:layout-master-set>

  <fo:simple-page-master margin-right="20mm" margin-left="20mm"

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

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

   <fo:region-body margin-top="3cm" margin-bottom="2cm"

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

   <fo:region-before extent="3cm"/>

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

  </fo:simple-page-master>

 </fo:layout-master-set>

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

  <fo:static-content flow-name="xsl-region-before">

   <fo:block text-align="center" font-size="36pt"

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

    Creating Columns

   </fo:block>

  </fo:static-content>

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

   <fo:block font-size="24pt" font-family="sans-serif"

    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.

   </fo:block>

  </fo:flow>

 </fo:page-sequence>

</fo:root>

Результат обработки этого документа, columns.pdf, показан на рис. 12.7.