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

 border-width="1pt" height="1.0cm" width="9cm" top="3cm"

 left="0cm" padding="2pt" position="absolute">

 <fo:block text-align="center" line-height="22pt"

  font-family="sans-serif" font-size="18pt">

  Description of Service

 </fo:block>

</fo:block-container>

<fo:block-container border-color="black" border-style="solid"

 border-width="1pt" height="4cm" width="9cm" top="4.0cm"

 left="0cm" padding="2pt" position="absolute">

 <fo:block text-align="start" line-height="15pt"

  font-family="sans-serif" font-size="12pt">

 </fo:block>

</fo:block-container>

Результат показан на рис. 12.2. Я считаю эту возможность одной из самых важных в XSL-FO: вы можете помещать элементы в точности туда, куда вам нужно. Допустимо полагаться на поток объектов, создаваемый процессором XSL-FO, но иногда требуется расположить объекты в определенном месте, и теперь вы знаете, как это сделать.

Встроенные форматирующие объекты

Помимо объектов блока, в XSL-FO можно также создавать встроенные (inline) объекты. Встроенный объект представляет собой часть большей форматирующей области, такой как блок; например, встроенный объект может представлять одно или два слова в блоке. Встроенные объекты обычно применяются для форматирования части текста после того, как этот текст был размещен на странице в соответствии с обычным потоком. Можно увеличить первый символ в абзаце, выделить всю первую строку голубым цветом, вставить номера страниц, добавить рисунки и т.д.

Встроенные объекты можно применять для форматирования частей текста блока; например, в главе 11 мы видели, как свойство text-decoration объекта <fo:inline> применялось для подчеркивания текста:

<xsclass="underline" template match="PLANET/MASS">

 <fo:block font-size="24pt" line-height="32pt"

  font-family="Times">

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

   Mass;

  </fo:inline>:

  <xsclass="underline" apply-templates/>

  [Earth = 1]

 </fo:block>

</xsclass="underline" template>

В следующем списке перечислены встроенные форматирующие элементы:

• <fo:bidi-override>;

• <fo:character>;

• <fo:initial-property-set>;

• <fo:external-graphic>;

• <fo:instream-foreign-object>;

• <fo:inline>;

• <fo:inline-container>;

• <fo:leader>;

• <fo:page-number>;

• <fo:page-number-citation>.

Я опишу несколько самых распространенных встроенных элементов, начав с самого <fo:inline>.

Создание встроенных областей: <fo:inline>

Как вы уже видели в главе 11, при помощи элемента <fo:inline> вы можете форматировать части текста, задавая для них задний фон, подчеркивая текст или заключая текст в границы. Элемент позволяет форматировать встроенную область из нескольких слов в блоке текста как если бы они сами представляли собой блок.

С элементом <fo:inline> можно применять следующие свойства:

• общие свойства доступа: source-document, role;

• общие звуковые свойства: azimuth, cue-after, cue-before, elevation, pause-after, pause-before, pitch, pitch-range, play-during, richness, speak, speak-header, speak-numeral, speak-punctuation, speech-rate, stress, voice-family, volume;

• общие свойства границ, заполнения и заднего фона: 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;

• общие свойства шрифтов: font-family, font-size, font-stretch, font-size-adjust, font-style, font-variant, font-weight;

• общие свойства встроенных полей: space-end, space-start;

• alignment-adjust;

• baseline-identifier;

• baseline-shift;

• color;

• dominant-baseline;

• id;

• keep-together;

• keep-with-next;

• keep-with-previous;

• line-height;

• line-height-shift-adjustment;

• relative-position;

• text-decoration;

• visibility;

• z-index.

Например, мы уже видели, как подчеркнуть отдельное слово внутри остального текста при помощи свойства text-decoration:

<xsclass="underline" template match="PLANET/MASS">

 <fo:block font-size="24pt" line-height="32pt"

  font-familу="Times">

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

   Mass

  </fo:inline>:

  <xsclass="underline" apply-templates/>

  [Earth = 1]

 </fo:block>

</xsclass="underline" template>

Мы еще встретим элемент <fo:inline>, когда будем рассматривать сноски позже в этой главе.

Обработка отдельных символов: <fo:character>

Как можно догадаться по имени, объект <fo:character> позволяет работать с отдельными символами в документе. Одна из областей применения <fo:character> — случай, когда нужно заменить определенные символы на другие. В следующем примере я выбираю элемент с именем <PASSWORD> и заменяю его символы на символ «*»:

<xsclass="underline" template match="PASSWORD">

 <fo:character character="*">

  <xsclass="underline" value-of select="."/>