Преобразование в другие форматы

Для преобразования исходных документов в другие форматы используются языки описания преобразований и таблицы стилей. Существуют два языка для работы с таблицами стилей (stylesheets):

DSSSL

Язык семантики и описания стиля документа (DSSSL — Document Style Semantics and Specification Language) был создан для работы с документами в формате SGML и может работать с документами в формате XML, поскольку второй является подмножеством первого. В Sisyphus таблицы стилей DSSSL для работы с Docbook находятся в пакете docbook-style-dsssl.

Утилиты, использующие эти таблицы стилей, находятся в Sisyphus в пакете docbook-utils.

Пример 3.1. Преобразование XML-документа в формат HTML с использованием DSSSL-стилей

db2html file.xml
XSL

Расширяемый язык стилей (XSL — Extensible Style Language) — язык обработки стилей, созданный специально для работы с XML. Он позволяет преобразовывать документы из XML в HTML, RTF, а также в другие документы XML. Для преобразования XML-документов можно также пользоваться языком XSLT — XSL Transformations. В Sisyphus XSL-таблицы стилей для Docbook/XML находятся в пакете docbook-style-xsl.

Процессор, обрабатывающий XSL-таблицы стилей, находится в Sisyphus в пакете xsltproc.

Пример 3.2. Преобразование XML-документа в формат HTML с использованием XSL-стилей

xsltproc --xinclude \
--stringparam base.dir html/ \
--stringparam chunker.output.encoding "KOI8-R" \
/usr/share/xml/docbook/xsl-stylesheets/html/chunk.xsl file.xml

В этом примере используется стиль chunk, который создаёт отдельные html-файлы для каждого раздела в подкаталоге html. Параметр chunker.output.encoding указывает кодировку выходных файлов.

Подсказка

При использовании стиля docbook на выходе получится один большой html-файл со всем содержимым. Параметр chunker.output.encoding при этом не учитывается и в документе вместо букв будут их номера в UNICODE. Такие документы корректно отображаются браузерами, просто занимают больше места, чем документы с кодировкой, например, koi8-r.

Опытным путем выяснено, что использование XSL-стилей даёт лучшие результаты, чем использование DSSSL-стилей.