В. А. Капустин Содержание Формальные структуры текстовых документов 1 Курс лекций

Вид материалаКурс лекций
Тонкая настройка DocBook XSL
Указание языка
Управление оглавлениями
Управление глубиной оглавления
Выборочное исключение заглавия элемента из оглавления
Оглавления секций
Таблица 1Управление глубиной оглавлений (generate.section.toc.level / toc.section.depth
Оглавление секции включает
Таблица 1 построена в предположении, что параметр toc.max.depth
Оглавление секции включает
Таблица 2 построена в предположении, что параметр toc.section.depth
Подобный материал:
1   ...   7   8   9   10   11   12   13   14   ...   17

Тонкая настройка DocBook XSL


DocBook XSL, как уже говорилось, имеет большое количество настроек. Здесь мы рассмот­рим только две из них: настройку языка и настройку оглавлений.

Указание языка


DocBook XSL содержит служебные текстовые строки для порождения элементов заголов­ков (например, «Глава») на 45 языках. Для применения необходимого языка соответству­ю­щий элемент должен иметь необходимое значение атрибута lang:

. . .

Но вместо этого можно использовать параметр DocBook XSL, управляющий лока­лизаци­ей порождаемого текста:



Замечание

Программный продукт Authentic компании Altova поставляется с устаревшим набо­ром файлов DocBook XSL, не поддерживающим локализацию.

Управление оглавлениями


Для управления оглавлениями DocBook XSL использует параметр generate.toc. В отли­чие от большинства других параметров DocBook XSL, этот параметр является непустым элементом, например (значения по умолчанию):


appendix toc,title
article/appendix nop
article toc,title
book toc,title,figure,table,example,equation
chapter toc,title
part toc,title
preface toc,title
qandadiv toc
qandaset toc
reference toc,title
sect1 toc
sect2 toc
sect3 toc
sect4 toc
sect5 toc
section toc
set toc,title


Значение этого параметра – пары, разделённые пробельным материалом (ведущие про­белы не учитываются). Первый элемент пары – имя элемента, второй – список подпара­мет­ров, указы­ва­ю­щий, какое именно оглавление будет сформировано для этого элемента (частный случай – никакого). В списке подпараметров возможно использование следую­щих значений:
  • toc

Следует генерировать оглавление (из заглавий вложенных элементов)
  • nop

Не генерировать оглавление
  • title

Включать заглавие оглавления, например, «Содержание»
  • figure,table,example,equation ...

Перечень элементов, для которых следует генерировать оглавление (указатель)

В качестве разделителя в списке подпараметров используется запятая, пробелы не допус­каются.

Управление глубиной оглавления


Глубиной оглавления можно управлять при помощи параметра toc.section.depth:



выводит в оглавление книги только список глав и полностью подавляет оглавления в гла­вах; положительные значения toc.section.depth определяют уровень вложенности сек­ций, до которого заглавия секций включаются в оглавление. По умолчанию параметр toc.section.depth имеет значение 2., т.е. в оглавления выводятся заглавия двух верхних уровней секций.

Рассмотренный параметр управляет «абсолютной» глубиной используемых в оглавлени­ях заголовков. DocBook XSL позволяет использовать и другой параметр, toc.max.depth, управляющий «относительной» глубиной:



заставит XSLT-преобразование вывести во все оглавления заглавия (глав/секций) не более чем на два уровня вглубь.

Выборочное исключение заглавия элемента из оглавления


Для выборочного исключения заглавия элемента из оглавления используется атрибут role. Если, например, значение этого атрибута, равное 'NotInToc', должно означать, что заголовок соответствующей секции не должен попадать в оглавление, в XSLT-обёртку следует добавить правило:



которое фактически отключит порождение строки оглавления для секции с указанным значением атрибута role.

Оглавления секций


В приведённом на предыдущей странице параметре generate.toc по умолчанию сек­ции всех уровней имеют оглавления. Однако рассмотрение реально сгенерированного вы­вода показывает, что секции оглавлений не имеют. Такое поведение связано с наличием ещё одного настроечного параметра – generate.section.toc.level, определяющего глу­бину вложенности секции, для которой будет создано оглавление. Оглавление также может отсутствовать из-за того, что включение необходимых заглавий подавлено пара­мет­ром toc.section.depth.

Параметры generate.section.toc.level, toc.section.depth и toc.max.depth поз­во­ляют гибко управлять видимостью заголовков в оглавлениях. Их взаимодействие проще всего представить на следующих примерах:

Таблица 1
Управление глубиной оглавлений (generate.section.toc.level / toc.section.depth) –
абсолютный уровень включаемых секций

generate.section.toc.level

toc.section.depth

Оглавление секции включает:

sect1

sect2

sect3

sect4

1

2

sect2

Пусто

Пусто

Пусто

3

sect2

sect3

Пусто

Пусто

Пусто

4

sect2

sect3

sect4

Пусто

Пусто

Пусто

2

2

sect2

Пусто

Пусто

Пусто

3

sect2

sect3

sect3

Пусто

Пусто

4

sect2

sect3

sect4

sect3

sect4

Пусто

Пусто

3

2

sect2

Пусто

Пусто

Пусто

3

sect2

sect3

sect3

Пусто

Пусто

4

sect2

sect3

sect4

sect3

sect4

sect4

Пусто

Таблица 1 построена в предположении, что параметр toc.max.depth имеет достаточно большое значение.

Таблица 2
Управление глубиной оглавлений (generate.section.toc.level / toc.max.depth) –
относительный уровень включаемых секций

generate.section.toc.level

toc.max.depth

Оглавление секции включает:

sect1

sect2

sect3

sect4

1

1

sect2

Пусто

Пусто

Пусто

2

sect2

sect3

Пусто

Пусто

Пусто

3

sect2

sect3

    sect4

Пусто

Пусто

Пусто

2

1

sect2

sect3

Пусто

Пусто

2

sect2

sect3

sect3

sect4

Пусто

Пусто

3

sect2

sect3

sect4

sect3

sect4

sect5

Пусто

Пусто

3

1

sect2

sect3

sect4

Пусто

2

sect2

sect3

sect3

sect4

sect4

sect5

Пусто

3

sect2

sect3

sect4

sect3

sect4

    sect5

sect4

sect5

    [sect6]

Пусто

Таблица 2 построена в предположении, что параметр toc.section.depth имеет доста­точно большое значение.