Генерация XSL

Shadow_1512

Новичок
Генерация XSL

Собственно в чем суть. Есть место, где человек проектирует шаблон документа, ну например
<news>
<item>
<title></title>
<author></author>
<date></date>
<text></text>
</item>
</news>
Ну, конечно, делает он это не так, как я тут нарисовал, но в общем формально после действий пользователя получается некое DTD.
Дело в том, что я могу создать DOM-дерево, загнав туда что пользователь навводил и радостно выгнать дерево в файл, получив xml-файл. Проблема - человек вместе с тегами шаблона задает способ их отображения, т.е. для title - шрифт такой-то, отступ такой-то, для author - с новой строки, другим цветом и т.д. (некий набор опций для каждого элемента). Моя задача сохранить вместе с xml документом еще и xsl к нему.
А вот как? Как сгенерить xsl? ясно, что xsl - это вообще говоря тот же xml, вот только не понимаю я, что делать?

Может быть сумбурно, но в общем, если кто что понял, то с благодарностью выслушаю советы и поймаю помидоры коли что....
 

Alexandre

PHPПенсионер
Может быть сумбурно,
ага! :)
Как сгенерить xsl?
как? - написать свой XSL-generator.

как написать ?
1) - расписать правила генерации
2) - их реализовать
В принципе если ясно как сделать первое, то второе делается без проблем
 

Shadow_1512

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

chameleon

Новичок
Проблема - человек вместе с тегами шаблона задает способ их отображения, т.е. для title - шрифт такой-то, отступ такой-то, для author - с новой строки, другим цветом и т.д. (некий набор опций для каждого элемента). Моя задача сохранить вместе с xml документом еще и xsl к нему.
к сожалению, этой информации мало. дай кусок того, чего нагенерил пользователь и то что хочешь получить.
зы: если это только форматирование, то почему xslt, а не css?
 

Shadow_1512

Новичок
Последняя фраза, надо сказать, как нельзя кстати. Действительно, подумал я примерно в то же время, что тут ты мне постил, а на кой мне xsl?? Может действительно обойтись css? В общем-то, наверное, если бы дело ограничивалось форматированием так бы и сделал, но я подозреваю, что в своем определенном развитии в системе должны будут появиться возможности, например, сортировок, которые очень красиво решаются при помощи xsl и прочие приятности, поэтому, возможно, на данном этапе и можно было бы ограничиться более простой задачей, т.е. генерить css (и похвалили бы меня сторонники Экстремального программирования за такой шаг), но в целях большей функциональности все-таки буду заниматься генерацией xsl.

Теперь по первой части.
Допустим, что есть у человека некая база условных тегов и он хочет добавить еще один, например, title.
Он создает тег title (просто в формочке вбивает название), далее система предлагает ему описать форматирование этого тега, т.е. атрибуты шрифта, отступы, бэкграунд и прочее. Все это типа поставил галочку напротив свойства "отступ", стало активно поле ввода числового значения. В итоге после сабмита мы имеем массив ключ=значение, из которого надо сгенерить правило отображения тега в xsl.
Дальше больше, имеется база тегов. В определенный момент человек из них хочет создать некий шаблон, формат которого я описывал выше, т.е. из набора тегов он формирует структуру документа, учитывая некие правила. Логично было бы, чтобы те правила отображения, которые описывались с каждым элементом, в итоге генерировали общую xsl для созданного шаблона с учетом иерархии....Вот такая вот задача...

Извините за столь немаленький пост...
 

[DAN]

Старожил PHPClub
Можно сделать так.
Для каждого отдельного тэга создается xslt-шаблон (<xsl:template>) и где-нибудь хранится (либо в БД, либо в отдельных файлах).
Далее, при составлении шаблона документа в определенной последовательности выстраиваются инструкции <xsl:call-template> либо <xsl:apply-templates>

Имхо, ничего сложного тут нет.
 

Shadow_1512

Новичок
Спасибо, в общем-то изначально понятно, что ничего нет сложного, вопрос в тонкостях такого рода, как иерархия, и насколько легко, например, получить обратно в такую формочку данные их xsl. У меня просто в голове пока единой картины не сформировалось, вот и мучаю всех вопросами...
 

[DAN]

Старожил PHPClub
Возможно стоит посмотреть в сторону XML Schema, в которой будет описываться готовый документ.
Дело в том, что можно закладывать конечное отображение документа как в xml так и в xslt.
В первом случае xml можно обрабатывать, используя потоковые объекты. Тут, кстати легко применима модель CSS.
Во втором случае результирующее отображение документа строится по правилам xsl-шаблона. См. мой пост выше.
 

Shadow_1512

Новичок
Ok, спасибо, определенные мнения я для себя подчерпнул и это главное:)
 
Сверху