andygray
Guest
Хочу посоветоваться со специалистом по XML, XSLT и PHP
Hey!
Нужен совет по реализации моей задумки.
В качестве примера возьмём формирование структуры каталога (дирректории) вида:
+DirA
__-DirAA
__-DirBB
+DirB
__-DirBA
__-DirBB
__-DirBC
+DirC
Вывод поддиректорий текущей cur_dir осушествляется html'ом вида:
, где:
(1) structure
(2) line
(3) element
line имеет параметр num_el, значение которого должно импортироваться из внешнего файла настроек. Его значение определяет, сколько раз будет повторятся элемент element, другими словами - количество элементов в строке. Так же line содержит собственно element
element, в свою очередь, содержит элементы dir_link и dir_name.
Следовательно, должен быть шаблон вида (по сути-info файл):
Template1.???
Шаблон должен иметь подобную понятную структуру, что бы быть легко редактируемым. К примеру, если я захочу вставить рядом с каждой директорией количество поддиректорий - [DirA(2) DirB(3) DirC], то шаблон изменяется следующим образом:
Template1.???
Кроме того, правила преобразования в html должны быть максимально просто описаны, для правки как html-верстальщиком, так и php-кодером (не девелопером). Что то похожее на это:
Html-rules1.???
Итак, у нас есть Template1.??? и html-rules1.???
Ещё должен быть php файл Php-rules1.php, содержащий обработчики полей присутствующих типов - cfg и calc.
Вот у нас и есть полноценный набор файлов, представляющих собой совершенно независимый шаблон.
Вооот...
Как же это должно работать?
Допустим есть некая система, которая на лету позволяет подключать шаблоны. Вот краткий сценарий:
1. Инсталлируем новый шаблон работы со структурой директорий:
- указываем путь к папке с шаблоном
- система запрашивает у пользователя имя шаблона и добавляет элемент <name>TypedName</name> в Template1.???
- система парсит шаблон и создаёт под него соотв. базу данных с именем TypedName и полями ID и name (поля типов cfg и calc не создаются, т.к. они расчитываются в дальнейшем по своим правилам)
2. Заполняем базу
- система, на основе Template1.??? создаёт интерфейс для добавления/удаления/редактирования элементов по своим внутренним правилам
3. Просматриваем результаты
- В лоадер Php-rules1.php передается параметр cur_dir, затем загружается и исполняется файл Html-rules.??? - на экран выводятся поддиректории текущей (cur_dir). Вуаля!
Вот собственно то, что я вижу. То, как это должно работать.
...
ВНИМАНИЕ.
Вопрос.
Очень очень очень очень сильно не хочу придумывать с нуля языки шаблонов, правил и т.п. Я знаю, что уже есть готовые средства и механизмы создания подобных извращений (если вам так показалось) и не использовать их было бы грех. Как мне показалось, под мои нужды целиком и полностью подходят PHP+mySQL vs XML vs XSLT. Кто нибудь может нарисовать, с использованием этих технологий сделать данный пример? Я практик, и теорию начинаю усваивать и делать частью своего мышления только в случае, если ясно вижу способы использования. Сейчас это так, но не до конца, поэтому прошу совета/помощи. Возможно я не прав, и XMS+XSLT нужно оставить в стороне, использовав Smarty-templates. В любом случае жду совета.
Thx!
Crossposted to DeForum
Hey!
Нужен совет по реализации моей задумки.
В качестве примера возьмём формирование структуры каталога (дирректории) вида:
+DirA
__-DirAA
__-DirBB
+DirB
__-DirBA
__-DirBB
__-DirBC
+DirC
Вывод поддиректорий текущей cur_dir осушествляется html'ом вида:
Код:
|<table>
| |<tr>
| | |<td>
(1)| (2)| (3)|<a href="[dir_link]">[dir_name]</a>
| | |</td>
| |</tr>
|</table>
(1) structure
(2) line
(3) element
line имеет параметр num_el, значение которого должно импортироваться из внешнего файла настроек. Его значение определяет, сколько раз будет повторятся элемент element, другими словами - количество элементов в строке. Так же line содержит собственно element
element, в свою очередь, содержит элементы dir_link и dir_name.
Следовательно, должен быть шаблон вида (по сути-info файл):
Template1.???
Код:
<cur_dir type="input">$cur_dir</cur_dir>
<html_rules>Html-rules1.???</html_rules>
<php_rules>Php-rules1.php</php_rules>
<sum_el type="calc">sum_el</sum_el>
<structure>
<line>
<num_el type="cfg">$n</num_el>
<element>
<dir_name>$dir_name</dir_name>
<dir_link type="calc">$dir_link</dir_link>
</element>
</line>
</structure>
Template1.???
Код:
<cur_dir type="input">$cur_dir</cur_dir>
<html_rules>Html-rules1.???</html_rules>
<php_rules>Php-rules1.php</php_rules>
<sum_el type="calc">sum_el</sum_el>
<structure>
<line>
<num_el type="cfg">$n</num_el>
<element>
<dir_name>$dir_name</dir_name>
<dir_link type="calc">$dir_link</dir_link>
<sub_dirs_num type="calc">$sub_dirs_num</sub_dirs_num>
</element>
</line>
</structure>
Html-rules1.???
Код:
structire:
<table>[line]</table>
line (loop-[round(sum_el/num_el+1)]-times):
<tr>[element]</tr>
element (loop-[num_el]-times):
<td>
[dir_link][dir_name/][sub_dirs_num/][/dir_link]
<br></td>
dir_link:
-begin<a href="[#value]">
-end</a>
dir_name:
[#value]
sub_dir_num:
&пbsp([#value])
Ещё должен быть php файл Php-rules1.php, содержащий обработчики полей присутствующих типов - cfg и calc.
Вот у нас и есть полноценный набор файлов, представляющих собой совершенно независимый шаблон.
Вооот...
Как же это должно работать?
Допустим есть некая система, которая на лету позволяет подключать шаблоны. Вот краткий сценарий:
1. Инсталлируем новый шаблон работы со структурой директорий:
- указываем путь к папке с шаблоном
- система запрашивает у пользователя имя шаблона и добавляет элемент <name>TypedName</name> в Template1.???
- система парсит шаблон и создаёт под него соотв. базу данных с именем TypedName и полями ID и name (поля типов cfg и calc не создаются, т.к. они расчитываются в дальнейшем по своим правилам)
2. Заполняем базу
- система, на основе Template1.??? создаёт интерфейс для добавления/удаления/редактирования элементов по своим внутренним правилам
3. Просматриваем результаты
- В лоадер Php-rules1.php передается параметр cur_dir, затем загружается и исполняется файл Html-rules.??? - на экран выводятся поддиректории текущей (cur_dir). Вуаля!
Вот собственно то, что я вижу. То, как это должно работать.
...
ВНИМАНИЕ.
Вопрос.
Очень очень очень очень сильно не хочу придумывать с нуля языки шаблонов, правил и т.п. Я знаю, что уже есть готовые средства и механизмы создания подобных извращений (если вам так показалось) и не использовать их было бы грех. Как мне показалось, под мои нужды целиком и полностью подходят PHP+mySQL vs XML vs XSLT. Кто нибудь может нарисовать, с использованием этих технологий сделать данный пример? Я практик, и теорию начинаю усваивать и делать частью своего мышления только в случае, если ясно вижу способы использования. Сейчас это так, но не до конца, поэтому прошу совета/помощи. Возможно я не прав, и XMS+XSLT нужно оставить в стороне, использовав Smarty-templates. В любом случае жду совета.
Thx!
Crossposted to DeForum