[Devel] uniset и составной configure.xml

Pavel Vaynerman pv на etersoft.ru
Пт Дек 17 10:46:25 MSK 2010


> Ну, как я понял, XInclude без проблем позволяет включать файлы (как с
> относительными, так и с абсолютными путями).
> <xi:include href="test2.xml"/>
   Тут есть тонкость. В такой нотации, он вставляет ВЕСЬ файл. А нам это не 
подходит. Потому-что если мы например напишем
<sensors>
<xi:include href="s1.xml"/>
...
</sensors>

а в s1.xml будет 
 <sensors>
<item ../>
...
</sensors>

То в итоге будет:
<sensors>
 <sensors>
<item ../>
...
</sensors>
...
</sensors>
При этом корневые  теги в s1.xml обязаны быть. А нам надо без них..
Вообщем я там дальше покопал.. можно использовать нотацию
<xi:include href="s1.xml" parse="xml" xpointer="..."/>
но так сходу у меня не заработало. xpointer как раз ползволяет задать "часть" 
документа..


> Мержить дерево никто не будет, да это и не нужно наверное? Как я понимаю,
> чтобы просто разбить на части, это достаточно, ну и для выделения
> хостоспецифичной части — тоже.
Ну не совсем.. у нас "жётская структура" configure.xml. Он состоит из 
специальных секций. И тут либо тогда надо для каждого места вставки делать 
свой маленький xml.. Но это тогда очень мелкая разюивка будет и не знаю 
насколько удобна..(из серии grub2).  Либо грамотно "мержить"..



> > Вариант 2.
> > -----------------
> Ну это излишнее усложнение, к тому же ещё одна неявность.
 Да.. это я для количества предложил :)

> > Вариант 3.
> > ------------------
> > 
> >    Пришла ко мне такая идея. Есть мощные(!) внешние парсеры типа
> >    xsltproc.
> > 
> > А что если генерировать итоговый монолитный configure.xml при помощи них.
> > Т.е. в разработке находится много xml-файлов, а при сборке или на более
> > позднем этапе, это всё "собирается" в один configure.xml.
> 
> Тогда нужно собирать не в xml, а в что-то обработанное, приспособленное для
> быстрой загрузки. Например, сохранять бинарное загруженное дерево XML (не
> нашёл средств), или превращать в другой вид данных.
  Пытался найти в своё время, тоже не нашёл.. А с вдоичным форматом, есть 
такакя тонкость.. вов ремя наладки и сопровождения системы часто приходится
вносить изменения... (по задержкам, фильтрам там каким-нибудь и т.п.).
Поэтому xml был удобнее.. Ну либо надо делать утилиту "прекомпиляции".
Типа "изменил исходные xml" - "перегенерил конф. файл" - "запустил"

> > К плюcам этого способа, отношу  то, что:
> > - используются мощные внешние программы (на любом(!) удобном языке
> > програмирования)
> > - не надо переписывать uniset :)
> > - когда система уже установлена и работает (на контроллерах), то
> > configure.xml не меняется и поэтому каждый раз "замедлять" загрузку из-за
> > "парсенья" многих файлов, которые не менялись.. тоже не хорошо.
> 
> Не думаю, что количество файлов имеет значение. Время их разбора зависит
> только от объёма.
  Тут получиться работа по загрузке каждого файла, обработке и выгрузке..

> 
> > P.S. Если кто-то видит другие более удачные варианты.. welcome..
> 
> Я бы начал использовать XInclude, для этого одну только строчку нужно
> добавить в Uniset
> xmlXIncludeProcess(xml);
Да я так и сделал... Только запушить не успел :)

-- 
Pavel Vaynerman
www.etersoft.ru


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