3. Настройка

Первый, самый простой уровень настройки — это выбор стартового скрипта.

В приведенном ранее примере таковым является html/chunk.xsl. Он наиболее употребительный, но не единственный. Другие варианты:

Более широкие возможности для управления внешним видом выходного документа предоставляют параметры, которых только для chunk.xsl насчитывается более 200. Пример: заставим выделять в отдельный файл первый раздел документации и зададим кодировку выходного документа windows-1251 вместо UTF-8, принятой по умолчанию:

$ xsltproc --param chunk.first.sections 1 \
> --stringparam chunker.output.encoding windows-1251 \
> /usr/docbook/xsl-stylesheets/html/chunk.xsl article.xml

Для реальной работы захочется задать как минимум десяток параметров, однако делать это через командную строку неудобно. Значит, пора создать так называемый "XSL драйвер". Создайте в текущей директории файл с именем mydocbook.xsl и следующим содержимым:


<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="/usr/docbook/xsl-stylesheets/html/chunk.xsl"/>
<xsl:param name="chunk.first.sections" select="1"/>
<xsl:param name="chunker.output.encoding" select="'windows-1251'"/>
</xsl:stylesheet>

Подайте его на вход XSLT процессору:

$ xsltproc mydocbook.xsl article.xml

Теперь вы вольны экспериментировать: задавать файл стилей CSS, управлять автоматической нумерацией, размещением оглавлений и многим другим. Все вопросы применения и настройки XSLT великолепно изложены в книге DocBook XSL: The Complete Guide, а актуальный перечень параметров содержится в справочнике DocBook XSL Stylesheet Reference Documentation.

В результате манипуляций с параметрами вы добьетесь того, что сгенерированные HTML-страницы будут полностью удовлетворять вашим представлениям об эстетике и эргономике или просто соответствовать принятому корпоративному стилю:

Рисунок 2. Фрагмент документации Бизнес-Консоль

Фрагмент документации Бизнес-Консоль

Максимальной гибкости в использовании XSL-скриптов можно достичь, если подменять не только значения параметров, но и код, используемый для обработки тех или иных тэгов. Например, если вас не устраивает то, как отрабатывается тот или иной шаблон, вы просто копируете его из файла в каталоге /usr/docbook/xsl-stylesheets в свой драйвер и правите его так, как считаете нужным. Шаблоны, которые вы напишете, перекроют импортируемые.

Похожим способом можно не только менять обработку существующих тэгов, но и вводить свои собственные. Искушенный читатель мог заметить, что в примере исходного файла мы опустили DTD-декларацию, т.е. не связали наш документ с XML-схемой DocBook. Это было сделано не случайно.

Прежде всего заметим, что XSLT процессор указания DTD не требует. Естественно, при этом возможна ситуация, когда ваш документ будет правильным XML, но не будет соответствовать схеме DocBook. Например, в нем будут придуманные вами тэги. XSL-скрипты в такой ситуации ведут себя очень разумно: содержащийся внутри таких тэгов текст попадет в выходной документ, при этом он будет выделен красным цветом. Теперь вам осталось написать свой обработчик (xsl:template) для изобретенного вами тэга и вставить его в драйвер mydocbook.xsl. (Еще лучше — поместить обработчик в отдельный файл и включить его в драйвер командой xsl:import.)

Вот в такой свободе и раскрывается преимущество открытых технологий над закрытыми коммерческими решениями.