Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Velocity vs. XSLT+XML


Автор: Wowa 6.2.2006, 03:54
Прочитал статью: http://forum.vingrad.ru/index.php?showtopic=44988&hl=pdf&st=15 и возник вопрос, чем собственно Velocity лучше
связки XSLT+XML ?

Автор: tux 6.2.2006, 09:54
Цитата(Wowa @ 6.2.2006, 08:54 Найти цитируемый пост)

чем собственно Velocity лучше связки XSLT+XML ?

Напишу что я об этом думаю, возможно это спорное мнение, но для того и форум чтобы спорить. smile

По-моему, ничем не лучше по той простой причине что это разные вещи.

В чем достоинства XSLT (не в сравнении с Velocity, а вообще)? В том, что мы можем взять некий XML, описывающий какой-то предмет, образ, да что угодно, применить к нему заранее подготовленный XSLT и получить на выходе документ в любом формате - простой текст, другой XML-документ, HTML-страницу, PDF и т.п. Причем такая гибкость дает возможность за счет замены XSLT-таблицы получить документ совершенно другого формата и другого оформления.

Что нам дает Velocity? Возможность очень простой динамической генерации любого текста (насколько я знаю Velocity не умеет работать с двоичными данными, если кто-то знает обратное, меня поправит). Нужно всего три шага - инициализировать движок, создать контекст (набор переменных, которые будут использоваться при генерации текста) и, собственно, сгенерировать что нужно из заданного контекста. В результате получим HTML, XML или что-то еще текстовое.

Вообще говоря, ни то ни другое не ограничено применением только в веб.

Вот еще в чем загвоздка - в чистом виде XSLT для веб использовать сложно. Нам ведь нужно где-то взять исходный XML-документ. Можно, конечно, взять и сгенерить DOM-модель на основе каких-то динамических данных приложения, на которую наложить XSLT и получить результат. Однако, это ведь слишком сложно и практически нереально для большого приложения. А вот здесь и может пригодиться способность Velocity генерировать текст используя динамическую информацию. Как вам такой вариант:
  • сгенерировать XML из готового шаблона XML-документа с использованием заданного контекста
  • выполнить с полученным XML XSLT-преобразование и получить нужный документ в каком угодно виде
В общем-то это достаточно распространенная практика и часто используется особенно в сочетании с веб-фреймворком Jakarta Turbine.

С другой стороны, если нужно только веб-приложение, которому не нужно ничего кроме HTML, то XSLT мне кажется лишним. Исключение если уже существующее приложение само генерит XML-документы. В этом случае проще использовать Velocity в чистом виде, а о его достоинствах уже много говорилось.

Ну и в конце резюме:
  • Velocity и XSLT - отнюдь не конкурирующие, а скорее взаимодополняющие технологии, которые эффективно можно использовать как раз в связке
  • гибкость XSLT дает возможность создания (почти) любых документов из готового XML
  • там, где нужен только текст проще использовать Velocity

Автор: 3,14 8.2.2006, 11:21
С расширением обычного приложения, работающего только с HTML, до поддержки XML особых проблемм нет, если приложение правильно спроектированно. Просто нужно помещать обьеты для передачи в JSP в SessionBean-ы, для того чтоб расширить приложение до поддержки XML нам только понадобиться написать класс преобразующий набор обьектов из SessionBean в XML. Причём как правило достаточно использовать для этой цели java.beans.XMLEncoder.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)