автор: Александр Качанов
перевод: n|a
В первой части статьи мы познакомились с общим принципом преобразования контента на стороне сервера с помощью технологии XML/XSL. В данной статье мы поговорим о конкретной реализации данной технологии.
Заранее отвечаю на вопрос, который чаще всего приходил ко мне по по e-mail: "А зачем так извращаться?".
Отвечаю: да, XML/XSL преобразование это очень серьезный подход. Для многих проектов такой подход может быть совершенно не нужен. Для многих проектов он просто не может быть реализован. Для многих проектов он будет лишь тратой машинных ресурсов, сил и времени. Но есть проекты (по больше части академические и чисто информационные), для которых подобное преобразование - верное, выгодное и гибкое решение.
Интернет и связанные с ним технологии развиваются семимильными шагами, следовательно потребителями информации вашего сайта могут быть не только люди с 21-дюймовым монитором и 2Гц пентиумом, но и какая-нибудь кофеварка или тостер, подключеные к интернету. Я конечно утрирую, но смысл в том, что информация должна быть отделена от визуального представления точно так же, как в эпоху компьютеров она была отделена от восковых табличек, пергамента и бумаги.
Характерными сферами применения данных технологий могли бы быть он-лайновые библиотеки (библиотека Мошкова, библиотека РАН, заочные курсы повышения квалификации собирателей бабочек), каталоги (электронные магазины, торговые площадки), новостные сайты и так далее.
Мы еще остановимся на этой теме более подробно.
Так как xml/xsl-преобразование мы собираемся делать на стороне сервера, то выбор решения непосредственно зависит от того, какая ОС, какой веб-сервер, какие права хозяйничать на сервере, и какие машинные ресурсы имеются в нашем распоряжении. Для работы нам нужен xml-парсер, xsl-преобразователь и скриптовой движок, который будет всем этим заправлять.
Выбор очевиден: Microsoft распространяет продукт под названием MS XML, который является одновременно и xml-парсером и xsl-преобразователем. Вся химия на стороне сервера делается либо с помощью ASP, либо с помощью ISAPI. Для тех, кому интересно это направление, привожу ряд ссылок:
Microsoft & XML
Вкратце: здесь собрано все, что Microsoft связывает с XML
MS XML
Вкратце: самая свежая версия парсера-трансформатора MS XML 4.0. Этот парсер используется и на клиентской стороне броузером Internet Explorer, так что обновить парсер не мешает всем.
XML/XSL преобразование в виде ISAPI-фильтра
Вкратце: в своем ASP вы генерите XML, а IIS перед отправкой ответа клиенту на лету накладывает на этот XML файл XSL, который соотвествует броузеру, приславшему запрос
Здесь выбор шире. Вы можете пользоваться парсером и трансформерами Perl, парсером и трансформером PHP, либо парсером и трансформером, написанным на C.
Многие сервера приложений являются одновременно и Web-серверами и Java-контейнерами. В этом решении в качестве движка используются Java-технологии (Java-сервелеты и JSP-страницы). В качестве xml-парсеров и xsl-преобразователей используются либо родные продукты, поставляемые вместе с сервером приложений, либо сторонние продукты.
В следующей главе мы опишем пример системы, построенной на Java-технологии.
Вся система будет представлять собой сложную связку серверов и приложений:
Web-сервер служит входной дверью всех запросов. Веб-сервер работает как обычно: выдает html файлы, обрабатывает серверные скрипты (cgi/php/asp). Для построения системы могут быть использованы наиболее распространенные web-сервера: IIS или Apache
Почти все серверные скриптовые движки сейчас поддерживают работу с XML-документами и стилями. Свои xml-парсеры есть для Perl, PHP, ASP (MS XML Parser). Это значит, что вы вручную сами можете написать приложение обработки XML-документов с нуля, но работа эта очень сложная и трудоемкая. Поэтому советуем вам воспользоваться уже готовыми отточенными и отлаженными проектами.
Предлагаемый вариант построен на Java, поэтому фундаментом всей системы, помимо имеющегося уже web-сервера, будет самый свежий Java Development Kit (JDK). Самая последняя версия от Sun - версия 1.4, но мы рекомендуем пользоваться пока версией 1.3. Напомним, что хоть Sun и является владельцем технологии Java, JDK разрабатывают еще и другие компании-монстры, такие как IBM, Oracle, Microsoft (уже нет). Так что JDK можно взять любой, главное, чтобы он не сильно отступал от спецификации.
Servlet-JSP контейнер выступает как дополнение к существующему веб-серверу. Контейнер общается с web-сервером чаще всего через редирект по особому протоколу через особый порт. Web-сервер выдает обычные страницы до тех пор, пока не приходит особый запрос, который через перехватчик (redirector) направляется в Servlet-JSP container. Там этот запрос обрабатывается и опять возвращается web-серверу, который его как есть отправляет клиенту.
Использовать можно:
После установки всех этих компонентов на сервере у вас будет создана среда, которая позволит выполнять Java код (в виде сервлетов или JSP-страниц), ну и кроме всего прочего с помощью xml-парсера оперировать XML-документами. Опять-таки, код обработки вы можете написать сами: установив JDK/JSDK, вы получили в свое распоряжение все необходимые составные части. Но вспомним фразу из знаменитого фильма: "Все уже написано до нас".
Установив Tomcat вы уже получили в свое распоряжение один из xml-парсеров: Crimson. Число парсеров, написаных на Java, весьма велико. Все они отличаются друг от друга скоростью работы, объемом поддерживаемых функций, открытостью кода.
Xml-парсер и xsl-преобразователь это всего лишь инструменты. Сами по себе они не делают никакого волшебства. Эти инcтрументы связываются в единый ансабль с помощью особого приложения.
Например, в случае с MS XML, ISAPI-фильтр вместе с ASP страницами и есть то самое приложение, которое вызывает установленный в системе MS XML парсер для чтения XML-файлов и для преобразования XML в нужный формат с помощью XSL.
В нашем случае, мы будем пользоваться приложением, которое называется Cocoon. Это приложение представляет собой набор сервлетов, которые обрабатывают приходящий запрос, определяют, что за броузер его послал, в соответствии с конфигурацией налагают на XML-файл нужный XSL-файл, и отправляют ответ обратно броузеру.
В соответствии с духом Apache проект Cocoon представляет собой плод коллективных усилий сообщества открытых исходных кодов. Информация о нем находится по адресу xml.apache.org/cocoon/, где вы сможете найти также сами продукты, документацию, списки почтовой рассылки и форумы. Вы даже можете внести свой вклад в этот проект, если у вас есть силы на это.
Сервера приложений (Application Servers) от таких монстров, как Allaire-Macromedia, BEA, IBM, Oracle, Sybase, Sun-Netscape, IONA, имеют свои собственные модули, позволяющие создавать контент из XML с помощью XSL в нужный формат. Но следует учитывать, что, во-первых, все эти решения - коммерческие и весьма дорогие (цена колеблется от 10.000 до 50.000 долларов за сервер, плюс - стоимость модулей). Вам придется покупать Application-сервер, а покупая его, вы получаете еще кучу функций, которые быть может вам и не нужны. Решение с Cocoon получается хоть и урезанным, но бесплатным. Вполне годится для маленького проекта с маленьким бюджетом.
Если внимательно посмотреть примеры кода, что идут вместе с Xalan и Xerces, простенькое приложение xml/xsl-преобразования с распознаванием броузеров можно написать дня за три. Но Cocoon силен тем, что в нем реализовано намного большее, чем простое преобразование. В его состав входит мощная система кеширования страниц (caching), резервирования объектов (pooling), предтрансляция (pre-translation), гибкие конвейеры преобразований (pipeline transformation) и многое-многое другое, что я не буду пока перечислять. На создание этого приложения и фундамента для этого приложения ушло два года упорного труда десятков программистов высочайшего класса. Поверьте, попытаться создать подобное приложение в одиночку - безнадежное и бессмысленное занятие, можно лишь попытаться сделать, что-то близкое.
А по сему, перейдем непосредственно к Cocoon.
продолжение следует
Александр Качанов
« назад к списку статей
Книги на ozon.ru |
Стивен Холзнер (2002) XSLT. Библиотека программиста |
Книги на ozon.ru |
Майкл Кэй (2002) XSLT. Справочник программиста |
Книги на ozon.ru |
Алексей Валиков (2002) Технология XSLT |