Свежий номер №4-5 (381-382) / Практическое использование XML + XSL Омар Нессар, omar@2kinteractive.com 08.02.2001 Недавно в одной статье вычитал о важности XML и задался банальным вопросом: «А что дает на практике использование XML, какие задачи можно решить с его помощью?» Для себя я сделал следующие выводы. Представьте себе ситуацию, когда вам необходимо один и тот же документ выводить на разные устройства (ПК, мобильный телефон, КПК), в таком случае вы можете хранить свой документ как XML, а для его вывода применить к нему разные XSL-файлы. Из вышесказанного становится ясно, что одним из способов отображения XML-документов является применение XSL, хотя его возможности не ограничиваются только отображением. Представьте себе ресторан, у которого есть свой Web-сайт, а у большинства клиентов ресторана имеется доступ к Интернету с мобильного телефона. Хорошим ходом была бы возможность просмотреть меню с помощью мобильного телефона, также можно отказаться и от обычного бумажного меню, установив на каждом столике монитор. При этом кассира необходимо обеспечить доступом к этому же меню, плюс ко всему, ресторан каждый месяц выпускает PDF-каталог. В этом примере нам необходимо выводить данные на несколько устройств. Конечно, можно сверстать для каждого устройства отдельный набор файлов, скажем, для Web-сайта - вариант html, для Wap-сайта - вариант wml, а для остальных написать клиентскую программу доступа к базе данных ресторана или же динамически выводить данные из БД. Однако гораздо грамотнее решить эту задачу с помощью XML, благодаря чему вы сможете хранить данные в одних файлах, а информацию о форматах/отображении - в других, тогда, изменив данные, вы получите измененные документы. Ниже демонстрируется применение XML+XSL на примере витрины маленького книжного э-магазина. Необходимо вывести список книг в табличном виде в браузер и дисплей мобильного телефона:
К сожалению, пока не все браузеры способны отобразить XML-документы, поэтому приходится форматировать их в HTML на серверной стороне, хотя это можно делать и на стороне клиента. Впрочем, как вытекает из вышеприведенного примера, серверная сторона более подходящая. Форматирование на стороне клиента IE5.0 не на 100% поддерживает XSL, так как к выходу IE5.0 консорциум W3C еще не успел принять спецификацию XSL. Microsoft обещает полную поддержку XSL в IE5.5. Ниже приведен пример форматирования XML-документа на стороне клиента. Создадим XML-файл (library.xml), содержащий данные о книгах:
Как видите, вторая строка файла «library.xml» ссылается на XSL-файл (html.xsl), содержание которого приведено ниже:
Сохраняем оба файла в одной директории. Теперь можно открыть «library.xml» в MSIE5.x. Как видите, документ может быть форматирован простым добавлением XSL-файла. Но более красивым решением было бы использование для этого JavaScript, тогда можно было бы динамически изменять формат/дизайн документа, загружая другой XSL-файл, скажем, утром посетителям показать один дизайн, а вечером другой. Наши XML- и XSL-файлы готовы, остается написать JavaScript:
Вышеприведенный код сохраните в файле «js.html» в той же директории, где остальные ваши файлы. Форматирование на стороне сервера В отличие от клиентской стороны, на серверной стороне выбор инструментов (parser) для анализа и форматирования XML больше, почти любой серверный язык программирования имеет средства обработки XML-данных. Ниже приведен пример форматирования «library.xml»с помощью JSP (Java Server Pages):
Как видите, к существующему XML-файлу добавлена JSP-директива. Сохраните данный код в «library.jsp» в какой-нибудь поддиректории java-сервера, при этом не забудьте скопировать туда свой XSL-файл. Для проверки в адресной строке браузера наберите http://127.0.0.1/testxml/library.jsp, к этому времени сервер должен быть запущен. Посмотрев на полученный код, убедитесь, что ваш браузер получил HTML-данные, а форматирование, соответственно, производилось на стороне сервера. Форматирование «library.xml» для мобильного телефона Даже если бы телефонные трубки могли обрабатывать XSL, то было бы извращением при скорости передачи данных в сетях GSM все это делать на стороне клиента. Встроенные в мобильных телефонах WAP-браузеры не понимают HTML, поэтому нам нужен новый XSL для форматирования «library.xml» в WML (словарь XML), на котором общаются WAP-браузеры.
Этот код нужно сохранить в «wap.xsl». Итак, теперь у нас есть XSL и для Web-браузера и для Wap-браузера (мобильного телефона), так что же нам мешает написать скрипт, способный различить браузеры и выдать данные клиенту в соответствующем формате? Сделаем мы это с помощью ASP (под IIS):
Сохраните данный код в «library.asp» в одной из поддиректорий Web-сервера IIS, не забудьте туда же скопировать ваш XSL-файл (wap.xsl). Седьмая строка проверяет содержимое переменной «HTTP_USER_AGENT» и если в ней находит слово «Mozilla», то загружает «html.xsl», форматирует документ в HTML, а в противном случае, загружает «wap.xsl» и форматирует документ в WML. Хотя возможности и области применения XML не ограничивается одним вебом, тем не менее, я считаю, что он сделал или сделает для веба главное - разграничение структуры и отображения документа. По данной тематике можно посмотреть статью «Новый сайт „Компьютерры“» в #365. [i38148] Терминология ASP - Active server pages
|