[docs] Re: on olinking

Oleg A. Paraschenko olpa на xmlhack.ru
Пн Ноя 17 14:39:11 MSK 2003


  Привет,

On Mon, 17 Nov 2003 13:19:30 +0300
Vitaly Ostanin <vyt на vzljot.ru> wrote:

> On Mon, 17 Nov 2003 13:04:53 +0300
> "Oleg A. Paraschenko" <olpa на xmlhack.ru> wrote:
> 
> <skipped/>
> 
> > > >   Для того, чтобы olink-ссылки работали, в базу ссылок
> > > >   должны входить все
> > > > модули, соответствующие документам, на которые ведёт
> > > > ссылка.
> > > 
> > > Нет, так как ссылка должна указывать на объединяющий документ
> > > и id внутри него. То есть, если документ intro из admin хочет
> > > сослаться на id="admin.docs", то в качестве модуля должен
> > > быть указан admin.
> > 
> >   Чего-то я начинаю запутываться. Объясни мне лучше на таком
> >   примере:
> > 
> >   Есть документы:
> > 
> > * $DOCS_ROOT/admin.xml
> > * $DOCS_ROOT/devel/cvs/cvs.xml
> > 
> >   Из "admin.xml" я хочу сослаться на установку cvs, описанную в
> >   "cvs.xml"
> > (id=devel.cvs.install). Известно также, что объединённый
> > "admin.xml" не содержит ни строчки текста из "cvs.xml".
> 
> >   Как в таком случае должна выглядеть olink-ссылка?
> 
> <olink targetdoc="devel" targetptr="devel.cvs.install"/>
> 
> Кстати, targetdoc в общем-то не нужен - только для совместимости
> с DTD DocBook.
> 
> При этом target.database.document=docs.xml
> который включает
> devel.target.db

  Я правильно понимаю, что docs.xml должен выглядеть так:

---------
<!DOCTYPE targetset SYSTEM 
"/usr/share/xml/docbook/xsl-stylesheets/common/targetdatabase.dtd"
>

<targetset>
  <document targetdoc="admin">
    <xi:include 
      href="target.db"  
      xmlns:xi="http://www.w3.org/2001/XInclude"/>
  </document>
  <document targetdoc="devel">
    <xi:include 
      href="../devel/target.db"  
      xmlns:xi="http://www.w3.org/2001/XInclude"/>
  </document>
</targetset>
--------

  ?

> 
> > ...
> > 
> > > > 
> > > >   Предлагаю такой подход к обработке olink-ссылок:
> > > > 
> > > > * на этапе тюнинга, для каждой olink-ссылки:
> > > >     если targetptr указывает на id, существующий в самом
> > > >     документе,
> > > >       то olink-ссылка превращается в обычную xref-ссылку
> > > >   (для реальных книг, думаю, должно быть в 99.9% случаев);
> > > 
> > > Зачем?
> > 
> >   Потому что для большинства итоговых документов попадание
> >   должно
> > быть 100%, и тогда пляски с OLINKING=yes, созданием targetsets
> > и прочим убираются.
> 
> Targetsets нужны ещё и для независимой пересборки части
> документации. То есть admin может собираться отдельно от install,
> но содержать ссылки на него.

  Или включать его.

> 
> Наличие битых ссылок нужно проверять в любом случае.
> 
> olink не обязательно преобразовывается в xref - это может быть и 
> link, а дублировать логику работы с olink из оригинальных стилей
> - лишняя работа.

  А ведь действительно -- лишняя работа. Замечание принято. Эта
функциональность должна быть непосредственно в docbook-style-xsl.
Надо будет Бобу написать.

> 
> > > > * базу данных ссылок вести вручную (да, именно вручную,
> > > > никакой
> > > >   автоматики). Учитывая, что межбуквенных ссылок должно
> > > >   быть мало, это не должно быть большой проблемой.
> > > 
> > > Это была бы большая проблема.
> > 
> >   На данный момент у нас межкнижных ссылок -- 0 штук. Не думаю,
> >   что их число будет стремительно расти.
> 
> Стремительно, конечно, не будет. Но мне бы не хотелось допускать
> то, что потом может оказаться ошибкой дизайна.

  Именно поэтому предлагаю устроить развлечение: я буду придумывать
противоречия и проблемы, а ты объяснять, почему их нет.

> 
> > > >   Достоинства:
> > > > 
> > > > * такая схема работает;
> > > > * проста в понимании;
> > > > * тривиальна в реализации.
> > > > 
> > > > 
> > > >   Ваши мнения?
> > > 
> > > Честно говоря, я не понял, зачем это нужно.
> > 
> >   Если что-то можно упростить без потери функциональности --
> >   это надо упростить.
> > 
> > > В текущем варианте
> > > плохо только то, что использование olink нужно указывать явно
> > > - это исправляется тривиальным стилем по результатам
> > > xinclude.
> > 
> >   тривиальный стиль + тривиальный стиль  + тривиальный стиль +
> >   ...
> 
> Это сарказм? На аргумент не тянет. Кстати, ты сам предлагаешь
> написать тривиальный стиль - для замены olink на xref.
> 
> Что-то не нравится в стилях? В их тривиальности?

  Скорее, я просто не понял, что предлагается. Можно не объяснять.

> 
> > > Чтобы менять семантику olink, нужны веские причины.
> > 
> >   В данном случае семантика уже поменена, ибо сейчас база
> >   olink-ссылок
> > создаётся не из тех документов, в которые ведут ссылки, а из
> > самого документа, из которого ведут ссылки.
> 
> Это не так. База создаётся (должна создаваться) для каждого
> раздела независимо.

  Я правильно понимаю, что на самом деле "для каждого раздела" -- это
"для каждой бумажной книжки"?

> 
> > * Это несколько неочевидно, так как собирать надо не так как
> > сейчас.* Предложенная замена "olink" на "xref" делает явным и
> > понятным, что происходит на самом деле.
> 
> Хорошо, пусть будет замена, но не вместо, а дополнительно к
> текущей схеме - они не конфликтуют. Идёт?

  Нет, ни в коем случае. Две похожие "гениальные" идеи одновременно --
это ужасно. Кроме того, я уже понял, что замену на "xref" надо вводить
в родные стили docbook.

> 
> <skipped/>
> 
> -- 
> Regards, Vyt
> mailto:  vyt на vzljot.ru
> JID:     vyt на vzljot.ru


-- 
Oleg



Подробная информация о списке рассылки docs