[docs] on olinking
Alexander Bokovoy
a.bokovoy на sam-solutions.net
Пн Ноя 17 02:14:02 MSK 2003
On Mon, Nov 17, 2003 at 12:00:36AM +0300, Oleg A. Paraschenko wrote:
> Решение?
>
> Предлагаю такой подход к обработке olink-ссылок:
>
> * на этапе тюнинга, для каждой olink-ссылки:
> если targetptr указывает на id, существующий в самом документе,
> то olink-ссылка превращается в обычную xref-ссылку
> (для реальных книг, думаю, должно быть в 99.9% случаев);
>
> * базу данных ссылок вести вручную (да, именно вручную, никакой
> автоматики). Учитывая, что межбуквенных ссылок должно быть мало, это
> не должно быть большой проблемой.
>
> Достоинства:
>
> * такая схема работает;
> * проста в понимании;
> * тривиальна в реализации.
>
>
> Ваши мнения?
Давайте отойдем от того, что есть в CVS docs и рассмотрим другой пример
сильно пересеченного документа и разрезанного на куски документа, в
котором тоже можно было бы применить olinks -- это поможет понять,
насколько тот или иной подход будет адекватен двум (несколько разным)
задачам.
Возьмем в качестве примера smb.conf(5) из документации к Самбе. Это
335 исходных XML документов, в которых сейчас около 320 взаимных ссылок,
оформленных в виде <link linkend="...."/>. Сами по себе эти linkends не
валидны в исходных документах, поскольку исходные документы по отдельности
не используются -- они все включаются через xinclude в основной документ
(которых в ближайшем будущем будет более одного, с возможным выделением в
подгруппы логически связанных компонент).
В текущей реализации <link linkend="...."/> реально используется только
как ссылка, однако мне думается, что может иметь смысл перейти здесь на
olinks для того, чтобы можно было не перегружать функциональное содержимое
<link/> неимеющими отношение к чистому Docbook XML вещами -- планируется в
описание опций добавлять метаинформацию в виде ссылок на те опции, поведение
которых меняется при изменении конкретной опции. Думаю, что olinks в этом случае
будут осмысленным применением, поскольку сами по себе представляют
некоторую ссылочную абстракцию, а функциональное различие можно указывать,
например, при помощи ролевого атрибута (или есть что-нибудь более
пригодное?).
Теперь касательно предложенной схемы. Да, замена targetptr имеет смысл --
на сущность, адекватную результирующему документу, который может быть не
только валидным Docbook XML, но и, например, чистой выборкой
мета-информации. Так что только xref тут не обойтись, но это довольно
простая "проблема", которую ясно как решать.
А вот что касается автоматики, то тут не так все просто. Для больших
ссылающихся друг на друга поддокументов -- как в случае с описаниями опций
smb.conf(5), где каждый XML-файл содержит описание отдельной опции вместе
с мета-информацией о ней и ее зависимостях -- ручное ведение базы ссылок
будет неоправданной тратой. Фактически, оно вернет нас к ситуации, которая
была до перевода smb.conf(5) на Docbook XML и выделения описания опций в
отдельные поддокументы, со всеми вытекающими сложностями в поддержке.
Для примера можно посмотреть, например,
http://us3.samba.org/samba/ftp/samba-docs-20031411.tar.bz2 (3.3M),
содержимое каталога docbook/smbdotconf/*.
--
/ Alexander Bokovoy
Samba Team http://www.samba.org/
ALT Linux Team http://www.altlinux.org/
Midgard Project Ry http://www.midgard-project.org/
Подробная информация о списке рассылки docs