384 Часть II. Типовые решения
модели, организуется в некую логическую структуру, которая описывает визуальные
элементы будущего отображения, однако еще не содержит кода HTML. На втором этапе
полученная структура преобразуется в код HTML.
Упомянутая промежуточная структура представляет собой некоторое подобие логиче-
ского "экрана". Ее элементами могут быть поля ввода, верхние и нижние колонтитулы,
таблицы, переключатели и т.п. В связи с этим данную структуру можно по праву назвать
моделью представления. Очевидно также, что она вынуждает будущие страницы сайта
следовать одному стилю. Для большей наглядности модель представления можно пред-
ставить себе как систему, которая определяет элементы управления страницы и содер-
жащиеся в них данные, однако не описывает их внешний вид в терминах HTML.
Для построения каждого логического окна применяется собственный код. Методы
первого этапа обращаются к модели данных домена, будь то база данных, модель пред-
метной области (Domain Model, 140) или объект переноса данных (Data Transfer Object,
419), извлекают из нее информацию, необходимую для построения экрана, и помещают
эту информацию в логическое представление.
На втором этапе полученная логическая структура преобразуется в код HTML. Мето-
ды второго этапа "знают", какие элементы есть в логической структуре и как визуализи-
ровать каждый из этих элементов. Таким образом, система с множеством экранов может
быть трансформирована в код HTML путем единственного прохождения второго этапа,
благодаря чему решение о варианте преобразования в HTML принимается в одном мес-
те. Разумеется, воспользоваться таким преимуществом удастся только в том случае, когда
логические экраны компонуются по одному принципу.
Существует несколько способов построения двухэтапного представления. Наиболее
простой из них — двухэтапное применение XSLT. Одноэтапное применение технологии
XSLT следует подходу, реализованному в представлении с преобразованием, при котором
каждой странице соответствует своя таблица стилей XSLT, преобразующая данные доме-
на в формате XML в код HTML. В двухэтапном варианте этого подхода применяются две
таблицы стилей XSLT: первая преобразует данные домена в формате XML в логическое
представление в формате XML, а вторая преобразует логическое представление в форма-
те ХМ L в код HTML
Возможной альтернативой этому подходу является использование классов. В этом
случае логическое представление определяется как набор классов: класс таблицы, класс
строки и т.п. (рис. 14.4). Методы первого этапа извлекают данные домена и создают эк-
земпляры описанных классов, помещая данные в структуру, моделирующую логический
экран. На втором этапе для полученных экземпляров классов генерируется код HTML
Это делают либо сами классы, либо специальный класс, предназначенный для выполне-
ния визуализации.
И первый и второй подход основан на применении представления с преобразованием.
Вместо этого двухэтапное представление может быть построено на основе представления
по шаблону. В этом случае шаблон страницы составляется с учетом структуры логиче-
ского экрана, например:
<field label = "Name" value = "getName" />
После этого система шаблонов преобразует "логические" дескрипторы, подобные
показанному выше, в формат HTML При такой схеме определение страницы не содер-
жит кода HTML, а только дескрипторы логического экрана, вследствие чего полученная