Но по-настоящему преимущества DocBook раскрываются в коллективной работе. Представим себе, что над документацией работает команда, включающая:
авторов, разбирающихся в сути той или иной области и поставляющих контент
редактора или литературного обработчика, который принимает фрагменты будущей документации у авторов, выправляет текст и собирает его в единое целое
дизайнера, отвечающего за верстку и художественное оформление документа
В такой ситуации остро встает проблема разделения контента и дизайна. Если авторы работают с Word, то их документы содержат и контент (собственно текст), и дизайн (шрифты, оформление абзацев, страниц и т.д.). Поэтому дальше идет трудоемкая ручная работа: редактор собирает фрагменты и приводит верстку в соответствие со стилем, заданным дизайнером (теоретически в этом могли бы помочь собственный механизм стилей Word, но на практике он работает не очень хорошо.)
Еще хуже становится дело, когда автору необходимо внести правку в свой фрагмент. Предположим, что программисты доработали продукт, и в документацию надо добавить описание нового параметра. Позволять авторам работать напрямую с выходным документом нельзя — возникнет конфликт совместного доступа. Значит, автор внесет правку в копию, и после этого, опять-таки вручную, редактор должен будет интегрировать ее в главный документ. Накладные расходы становятся непропорционально большими: даже если надо исправить небольшой фрагмент текста, приходится привлекать редактора, который должен выполнить ответственную операцию. В результате общая производительность труда оставляет желать лучшего.
Как в этой же ситуации строится работа через DocBook:
редактор намечает структуру будущего документа: делит его на главы или более мелкие разделы
для каждого раздела редактор создает отдельный файл DocBook, содержащий только название раздела
редактор раздает файлы авторам для работы над контентом
дизайнер разрабатывает файл CSS, определяя в нем стили для оформления регулярного текста, заголовков, ссылок, таблиц, рисунков и т.д.
редактор создает головной файл документа, содержащий ссылки на разделы
выходной документ создается из набранных фрагментов автоматически
Вот как при этом будет выглядеть начальный файл первого раздела start.xml,
который получает автор для работы:
<?xml version="1.0" encoding="windows-1251"?> <section id="start"> <title>Беглый взгляд</title> </section>
А вот как будет выглядеть головной файл:
<?xml version="1.0" encoding="windows-1251"?> <!DOCTYPE set PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN" "/usr/docbook/xml-dtd/docbookx.dtd"[ <!ENTITY start SYSTEM "start.xml">
<!ENTITY tools SYSTEM "tools.xml"> ... ]> <article lang="ru"> <articleinfo> <title>DocBook: системный подход к документации</title> ... </articleinfo> <abstract> <para> Технология DocBook существует с 1991 года ... </para> </abstract> &start;
&tools; ... </article>
| Местоположение файла SGML-схемы (DocBook DTD) на сервере. |
| В SGML-декларации определяются составные части документа. |
| Составные части вставляются в документ. |
Авторам не обязательно ждать пока соберется общий документ, они вполне могут запускать DocBook на своем фрагменте и смотреть, как он будет выглядеть в отформатированном виде. После такой предварительной отладки редактор может быть уверен, что получил от автора синтаксически правильный документ DocBook.
Поскольку весь документ разбит на составные части, которые к тому же являются текстовыми файлами, такая организация работы великолепно ложится на систему контроля версий (например RCS или CVS).
Снова вернемся к ситуации, когда в документ надо внести небольшую правку. Последовательность действий при работе с DocBook:
Автор достает из системы контроля версий нужный фрагмент документа, правит его, автономно просматривает и помещает исправленный вариант обратно в систему контроля версий.
Редактор просматривает новый текст, при необходимости корректирует. Но, в отличие от работы с Word, его заботит только контент.
Автоматически генерируется выходной документ.
Очень технологично, минимум накладных расходов. Одновременно, не мешая друг другу, над документом может работать большая команда.