Пропустить до основного содержимого
Мы ни кого не хотим насильно делать счастливыми!

Статьи

Найти
Домашняя
Новости
Форум
Статьи
Разработчикам
Библиотека
Управление
Помощь
  

MCP клуб в Саратове > Статьи > Записи > Текст доклада по программированию с использованием XML и XSLT трансформации
Текст доклада по программированию с использованием XML и XSLT трансформации

Добрый день, меня зовут Александр Червяк, я являюсь руководителем группы компьютерного обеспечения ГТРК «Саратов», а так же лидером клуба MCP в Саратове.

Сегодня я хотел бы презентовать часть собственных наработок использования XML технологий для построения web-сайтов.

И не смотря на то, что язык XML далеко не новый язык, а сайтостроение, своими корнями, уходит в прошлый век, тема, поднятая мной сегодня, по моему глубокому убеждению, остается актуальной и по сегодняшний день.

В чем же прелести того метода написания сайтов, который я вам буду сегодня представлять?!

1.       Независимость от платформы.

2.       Декларативность программирования.

3.       Гибкость, компактность и прозрачность (в чем вы сможете убедиться прямо сейчас).

Представленный сегодня код будет работать на любой платформе, однако, для его демонстрации я выбрал платформу .NET и редактор Visual Studio 2008. Почему именно их, я думаю, Вы поймете в конце демонстрации. Сейчас лишь добавлю, что реализация класса XslCompiledTransform полностью развеяла мифы, гуляющие в сети Интернет, о том, что XSLT трансформация XML документов не достаточно производительна. Может у каких-то парсеров она и не производительна, но разработчики .NET, в этом вопросе, потрудились на славу, за что им большое, человеческое, спасибо!

Итак, с чего начнем?!

Ну, во первых создадим пустой проект ASP.NET.

И первым делом, к чему приступим, так это создадим xml – файл в котором явно опишем, что мы хотим получить, совершенно не задумываясь о том, как «это» будет реализовано.

В данном случае мы хотим построить «сайт», соответственно так и пишем … «сайт»

Далее, у сайта есть страницы, давайте попробуем создать первую из них … «страница»

У каждой страницы должно быть имя, понятное всем, и путь по которому она должна открываться. Естественно, раз это наша первая страница, назовем ее «Главная» и объявим для нее путь по умолчанию.

Я долго думал, что именно предложить Вам в качестве демонстрации на первой странице, так что бы это, с одной стороны было не громоздко, а с другой стороны достаточно эффективно подчеркнуло возможность использования интерактивных сценариев данной технологии.

Думая о простоте, я выбрал всем знакомый пример под названием «Hello, World!», однако для интерактивности, решил поздороваться не с целым Миром, а только с тем, кто станет тестировать все это «безобразие».

 Стало быть, нам нужно выяснить его имя! Как правило, для таких целей, на страницах сайта, размещают формы, что мы сейчас и продемонстрируем …

Вот форма, но куда она будет отправлять данные?! Я предлагаю отправить их, например, по адресу «test.aspx».

Далее, внутри формы есть смысл задать вопрос, «Кто ты?»

И предложить поле по имени «name» для ввода ответа… «поле, по имени name»

Осталось ввести только кнопку отправки данных и определить надпись на ней.

Аналогичным способом создаем принимающую страницу, которая отобразит текст приветствия. Причем, в качестве имени мы будем использовать значение параметра «name», переданного из формы.

Ну, вот, собственно говоря, и все, наш демонстрационный сайт готов. Осталось только ответить на вопрос: -  «Как мы собираемся превратить нашу фантазию в реальность?!».

Ведь мы могли бы написать и по другому, вместо слова «кнопка» употребить слово «бутон», вместо слова «имя» - «название», вместо «путь» - «адрес»?!

Для этих целей и существует XSLT трансформация. Замечательно, что сам язык трансформации, является ничем иным, как обычным XML документом, правда, в отличие от нашей бурной фантазии, стандартизованным.

Как раз такая стандартная прослойка между платформой и анархической средой разработки, позволяет абстрагироваться от деталей реализации функциональности.

Грубо говоря, задача XSLT документа и заключается в том, чтобы сообщить процессору как мы собираемся реализовывать ту или иную фантазию декларативного программиста.

Давайте теперь создадим XSLT документ, описывающий каждую из наших фантазий в отдельности.

Ну, во первых, необходимо указать процессору, как следует связывать путь выбранной страницы с той или иной фантазией.

Далее, есть смысл сделать некое подобие «MasterPage», что бы страницы сайта были единообразны. В этом же месте и определяются регионы размещения того или иного контента.

Подобным образом создаем и шаблон формы.

Описываем, как должны выглядеть поле и кнопка этой формы.

Ну и конечно обычный текст.

А на закладку, опишем тег «значение», который подставит нужный параметр на странице.

В этом примере обращение к функции GetParam, происходит дважды, однако реализация этой функции, кастомизирована и от платформы к платформе будет меняться. Этот шаблон из трех строчек, наилучший пример элементарного шлюза между нестандартным тегом «значение» и стандартной реализацией функциональности в каждом конкретном FrameWorke. Как данная функциональность реализована в ASP.NET, я покажу в следующем, заключительном участке кода, написанном на C#, который вместе с тем и оживит все описанные нами фантазии.

Создаем обычный обработчик запросов, в нутрии которого объявляем публичную переменную Request.

Ее мы будем заполнять при каждом обращении, всей необходимой информацией, о текущем запросе.

Например, эта переменная нам пригодится для реализации уже известной Вам функции GetParam.

Или для вычисления абсолютных путей, только что созданных нами файлов.

И вот обещанный лакомый кусочек! Создаем объект XslCompiledTransform!!!

Для начала нам нужно, «загрузить» файл трансформации.

Затем создаем объект предназначенный для передачи аргументов, и в качестве единственного аргумента передаем ссылку на себя.

Для чего? Все очень просто! Как функция GetParam, так и любые другие написанные нами функции в этом классе, станут доступны именно через этот единственный аргумент.

Можно передать и любые другие объекты, расширяющие функционал Вашего «анархического» ФреймВорка, например библиотеки EXSLT более чем достаточны для реализации любых сценариев XSLT трансформаций. Можно использовать и скрипты (в том числе и на C#) в самих XSLT файлах. Однако в нашем примере ни то ни другое не потребуется.

Единственная и самая последняя строчка, дающая четкое понимание того, как работает вся эта «алхимия» - это собственно трансформация.

Именно в этой строке четко видно, что при каждом запросе, используя откомпилированный трансформатор, с учетом переданных аргументов, мы превращаем наши фантазии, непосредственно в исходящий поток.

Теперь, прежде чем нажать кнопочку «старт» и убедиться в том, что Бог создал нас по своему образу и подобию, необходимо и достаточно объявить в конфигурационном файле этого сайта, данный обработчик запросов.

Вот и все! Стартуем!!!

Как мы видим, форма есть, и она приглашает нас ввести информацию о себе.

Подтверждаем ввод, и убеждаемся – что данный код был написан с минимальным количеством ошибок.

 

Заметки

Нет заметок для этой записи.