Преобразование XML в HTML на сервере
Java Q&A
Нужно, чтобы преобразование XML документа с использованием XSL происходило на сервере и чтобы клиент получал HTML документ вместо комбинации XML документа и описания стилей в формате XSL. Как лучше подойти к решению этой задачи?
Есть много способов преобразования из формата XML в HTML. Оптимально было бы оставить эту задачу клиенту, так как выполнение ее на сервере требует слишком много ресурсов. Заставляя клиента выполнять необходимые преобразования, можно снять часть нагрузки с сервера.
К сожалению, нельзя рассчитывать на клиента - не все броузеры поддерживают преобразование XML в HTML, и понадобится достаточно много времени, прежде чем все пользователи обновят свои броузеры. Приложение на сервере может определить тип броузера и, в случае если он поддерживает XSL преобразование, передавать клиенту XML и XSL. Но это не самый удачный подход, возникают значительные трудности при поддержке.
Как выполнить преобразование на сервере? Возможны два подхода: использование сервлетов и JSP. Для выполнения преобразования на основе XSL понадобится XSL парсер. К счастью, есть отличные свободно распространяемые парсеры. (Важно еще и то, что можно получить бесплатную поддержку, например, задавая вопросы в соответствующие списки рассылки. - Смирнов).(см. ).
Обзаведясь парсером, легко можно реализовать преобразование из XML в HTML в сервлете или на JSP странице. Механизм преобразования для этих случаев во многом одинаков. Нужно передать XML и XSL файлы парсеру, а полученный HTML документ отправить пользователю в качестве ответа на запрос.
Если вы не знакомы с сервлетами и JSP, рекомендую вам обратить внимание на проект Tomcat - "эталонную" реализацию для этих технологий. Дистрибутив содержит документацию и примеры.(см. )
В зависимости от сложности XML документа вы можете решить полностью отказаться от применения XSL преобразования. Рекомендую посмотреть статью , в ней обсуждаются вопросы преобразования XML в HTML с использованием JSP. Представлен другой подход к решению описанной проблемы без использования XSL. Так же в статье приводится обширный список ссылок.