[Devel] uniset и составной configure.xml
Pavel Vaynerman
pv на etersoft.ru
Чт Дек 16 22:16:34 MSK 2010
Приветствую всех.
Недавно звучала тема, что наш монолитный configure.xml хорошо бы чтобы можно
было разбить на много xml-файлов...
Я чуть озаботился этой темой. И вот щаз у меня есть несколько вариантов
(идей) реализации на обсуждение:
Вариант 1.
------------------
Идеальным вариантом конечно является использовать для загрузки внешних xml-
файлов средства самой библиотеки. Типа прозрачным образом вообще
и ничего делать не надо.
В libxml2 сходу не нашёл такого. По краней мере без специальной
реализации... Так что если кто знает.. прошу..
Вариант 2.
-----------------
Могу (это не сложно) встроить в uniset загрузку многих xml например в
следующем виде:
В главном файле (configure.xml) объявляется секция
<extfiles>
<filename1>
<filename2>
...
<filenameN
</extfiles>
При этом эти файлы имеют такую же структуру как и configure.xml и парсер
"забирает" из них заранее(!) известные секции. Типа
<settings>,<sensors>,<objects> и т.п. Ну и "вставляет" их в основной файл.
Проверку на дубли и корректность, пока держим за скобками.
Вообщем вариант собственно простой реализации "склеивания".
Плюсы: реализовать не сложно.
Минусы: жёсткая завязка на структуру...
(ну и замедление загрузки.. см. вариант 3)
Вариант 3.
------------------
Пришла ко мне такая идея. Есть мощные(!) внешние парсеры типа xsltproc.
А что если генерировать итоговый монолитный configure.xml при помощи них.
Т.е. в разработке находится много xml-файлов, а при сборке или на более
позднем этапе, это всё "собирается" в один configure.xml.
К плюcам этого способа, отношу то, что:
- используются мощные внешние программы (на любом(!) удобном языке
програмирования)
- не надо переписывать uniset :)
- когда система уже установлена и работает (на контроллерах), то configure.xml
не меняется и поэтому каждый раз "замедлять" загрузку из-за "парсенья" многих
файлов, которые не менялись.. тоже не хорошо.
P.S. Если кто-то видит другие более удачные варианты.. welcome..
--
Pavel Vaynerman
www.etersoft.ru
Подробная информация о списке рассылки Devel