[docs] Re: makefile rework intro
Vitaly Ostanin
vyt на vzljot.ru
Ср Окт 29 11:34:55 MSK 2003
On Tue, 28 Oct 2003 21:44:49 +0300
Oleg A.Paraschenko <olpa на xmlhack.ru> wrote:
> Привет!
>
> On Tue, 28 Oct 2003 12:34:02 +0300
> Vitaly Ostanin <vyt на vzljot.ru> wrote:
>
> ...
> >
> > > > Сразу добавлю, что сейчас в Makefiles разброд с
> > > > переменными - они могут быть "параметр значение", а могут
> > > > быть просто"значение".
> > > >
> > > > Лучше в новых Makefiles использовать только "параметр
> > > > значение", чтобы можно было использовать переменную, даже
> > > > если "значение" не определено.
> > >
> > > Не понял. Нужны пояснения. Можно в jabber.
> >
> > Например, есть два варианта:
> >
> > 1.
> > ULINK_LEAVE = 1
> > xsltproc --param ulink.leave.duplicates.after $(ULINK_LEAVE)
> >
> > 2.
> > ULINK_PARAMS = --param ulink.leave.duplicates.after 1
> > xsltproc $(ULINK_PARAMS)
> >
> > Первый вариант неудачен, поскольку при неопределённом
> > ULINK_LEAVE стили не отработают. Второй вариант
> > самодостаточен, поскольку при неопределённом ULINK_PARAMS
> > просто будут использованы параметры по умолчанию из стилей.
>
> Насколько я вижу, от первого варианта быстро избавиться не
> получится, так как надо править все make-файлы. А я
> предпочитаю менять понемногу.
Для перехода к схеме сборки по зависимостям и так придётся
править все файлы... В принципе, первый вариант не сложно сделать
и потом.
> Чтобы не забыть вычистить такие штуки -- можно записать на
> меня задачу в bugzill'e.
Я не забуду :)
<skipped/>
> > > > > Цепочка преобразований.
> > > > >
> > > > > Общее начало:
> > > > > .xml -> xinclude -> profiling+tuning (A)
> > > >
> > > > XInclude незачем выделять в отдельный этап, IMHO.
> > >
> > > Пусть всё-таки будет. Интуиция советует, не хочу ей
> > > противоречить.
> >
> > Лучше всё-таки аргументировать.
> >
> > XInclude должен выполняться перед любой обработкой.
>
> Да.
>
> >
> > XInclude выполняется для всех документов, поскольку это
> > проще, чем выполнение в зависимости от наличия включений.
>
> Да.
>
> >
> > XInclude может выполняться в один проход с другими ключами
> > обработки и не конфликтует ни с одним из них.
>
> То есть XInclude никак не связан с обработкой. А как пишет
> Ален Голуб: "Сущность программирования: без сюрпризов,
> минимум сцепления и максимум согласованности.". Объединение
> независимых сущностей до добра не доводит. Другое дело, что
> надо показать, что Xinclude -- это отдельная сущность.
XInclude - это не отдельная сущность. Это прослойка объединения
модульных документов, она находится уровнем ниже DocBook.
И она не отделима от документов, поскольку без XInclude документы
невалидны и не могут быть обработаны стилями DocBook. Поэтому я и
возражаю против отдельной обработки XInclude - IMHO, это и есть
лишнее умножение сущностей.
Единственная потребность в обработке документов _до_ XInclude -
поиск зависимостей конечного документа от исходных. И то для
этого в последних libxml2/libxslt есть встроенное средство (не
помню название параметра).
> > Отдельное выполнение XInclude потребует дополнительного
> > запуска xmllint и дополнительной обработки как всего дерева
> > документов, так и всех external entities, DTD и т.п. - то
> > есть, накладно по ресурсам.
> >
> > А вот зачем это нужно, пока не ясно... К тому же отдельный
> > этап с XInclude всегда можно добавить.
>
> Или убрать ;-)
>
> Поясняю, зачем это нужно мне. Я хочу, чтобы при некоторых
> условиях "make" не пересобирал XInclude. Это желание
> естественным образом разделяет xinclude+profiling+tuning на
> xinclude и profiling+tuning, и, таким образом, xinclude
> становится отдельной сущностью.
Я не делал точных замеров, но субъективно я не заметил разницы в
скорости между обработкой документа с XInclude и уже собранного
документа. Это справедливо для libxml2 >= 2.4.25, тогда код
включений был полностью переписан.
> Про ресурсы. Xinclude, "external entities, DTD и т.п."
> выполняются только на первом шаге, больше их не будет.
> Ресурсы, потраченные на это, скорее всего, очень велики. По
> сравнению с ними, ещё один запуск xsltproc незаметен. А если
> делается парочка profiling, то выделение xinclude в отдельный
> шаг явно выгодно.
>
> Далее. Отладка. Результат Xinclude - важный промежуточный
> файл. Если tuning+profiling работает не так как ожидалось,
> что делать? Кто виноват -- неправильный XSLT или неправильный
> XPointer?
Отладка - это серьёзно. Даже убедительно :) Помню, как для этого
приходилось запускать xmllint --xinclude...
Хорошо, пусть будет отдельный XInclude.
На всякий случай параметры, с которыми я собирал итоговый
документ:
xmllint --nonet --xinclude --loaddtd --noent file.xml
<skipped/>
--
Regards, Vyt
mailto: vyt на vzljot.ru
JID: vyt на vzljot.ru
----------- следущая часть -----------
Было удалено вложение не в текстовом формате...
Имя : отсутствует
Тип : application/pgp-signature
Размер : 189 байтов
Описание: отсутствует
Url : /pipermail/docs/attachments/20031029/f44110fe/attachment.bin
Подробная информация о списке рассылки docs