'

Использование XSLT для разработки сайтов (на ASP.NET)

Понравилась презентация – покажи это...





Слайд 0

Использование XSLT для разработки сайтов (на ASP.NET) Андрей Майоров, BYTE-force xor@byte-force.com twitter.com/xorets


Слайд 1

Что нужно от языка шаблонов? Задача – показывать данные В виде HTML И не только в HTML Шаблон легко делается из HTML Общие фрагменты выносятся в отдельные файлы Работает быстро Кроссплатформенный и стандартный Все это — XSLT


Слайд 2

Сюда пишется заголовок слайда, также до 3 строк, не больше! Это – контентная область слайда. Желательно создавать новые слайды, дублируя (copy/paste) этот слайд в качестве образца, чтобы сохранить общую стилистику презентации. Также рекомендуется для набора текста использовать шрифт Trebuchet. Уже готовый. С блэкджеком и ...


Слайд 3

Команды XSLT stylesheet transform import include output template param variable copy apply-imports apply-templates call-template with-param value-of copy-of choose when otherwise if for-each sort decimal-format number element attribute attribute-set text comment processing-instruction fallback key message namespace-alias strip-space preserve-space Всего 35 штук


Слайд 4

XSLT ~ функциональный язык Декларативный язык: не 100% функциональный, но точно не императивный. Нельзя писать как в императивном – получится плохо. Правильный подход позволяет добиться невозможных в императивном языке вещей.


Слайд 5

Data driven Именно данные, находящиеся на конвейере обработки, управляют всем процессом. Основные преимущества XSLT <underpants /> <profit /> XSLT templates


Слайд 6

Модульность Программа на XSLT состоит из независимых шаблонов, отвечающих на разные входные данные. Основные преимущества XSLT plan.xslt 5 шаблонов underpants.xslt 3 шаблона sox.xslt 2 шаблона xsl:include xsl:include


Слайд 7

Наследование Директива import позволяет устанавливать отношения, сходные с наследованием. Основные преимущества XSLT extension.xslt base.xslt xsl:import


Слайд 8

Demo


Слайд 9

xsl:import Используйте для наследования <xsl:apply-imports> - вызов базового шаблона <xsl:apply-templates select=“.” mode=“…” /> - template method, вызов в базовом шаблоне. <xsl:call-template name=“…”/> - вызывает шаблон, заданный последним. Закрепление материала


Слайд 10

xsl:include Используйте для подключения компонентов Просто вставка одного файла внутрь другого Закрепление материала


Слайд 11

xsl:apply-templates Основной инструмент! Отдает узлы в обработку – позволяет делать волшебные преобразования. Использовать вместо: xsl:copy-of, xsl:for-each, xsl:choose. <underpants /> <profit /> XSLT templates xsl:apply-templates Закрепление материала


Слайд 12

Работа с переменными Можно только проинициализировать, менять значение нельзя. Цикл с увеличением счетчика – только через рекурсивный вызов. Закрепление материала


Слайд 13

Домашняя работа XPath. Функции XSLT и XPath. EXSLT. Поддержка в разных платформах.


Слайд 14

MVC в веб-разработке Model-View-Controller. Отделяет разработку UI от разработки бизнес-логики. Члены команды работают параллельно: Верстальщик делает интерфейс. Серверный программист – контроллеры.


Слайд 15

В каком формате передавать данные между controller и view?


Слайд 16

Передавать типизированный объект – неудобно Типизированный объект – это код, его еще надо написать. Наполнить объект данными – опять нужен код.


Слайд 17

Храним промежуточные данные в XML Данные удобно прототипировать вручную. В простом текстовом редакторе. Не нужно ждать готовности контроллера. Данные для тестов уже есть в XML-документе. Этими данными можно тестировать и сам контроллер.


Слайд 18

Сделали прототип и пошли работать… <poem> <title>Руслан и Людмила</title> <rating>5</rating> <description>...</description> </poem> Верстальщик Программист


Слайд 19

XML в веб-приложениях В веб часть данных уже в HTML. Например, текст новостной статьи. Взяв XHTML, можем объединить все данные в один XML-документ: Сильно структурированные — поля объектов. Слабо структурированные — данные от пользователя.


Слайд 20

Объединение слабо и сильно типизированных данных <poem id=“156”> <title>Руслан и Людмила</title> <rating>5</rating> <description> «Руслан и Людмила» — первая законченная поэма Александра Пушкина. </description> </poem>


Слайд 21

Критика XML в качестве модели Бизнес-логике неудобно работать с XML. Надо работать с типизированной моделью. Вручную преобразовывать объект в XML – мартышкин труд. XmlSerializer имеет свои ограничения.


Слайд 22

Возьмите ObjectXPathNavigator Позволяет работать с графом объектов, как будто это XML-документ. «Ленивый» Совместим с XmlSerializer. Расширяем.


Слайд 23

XsltView для ASP.NET MVC Нужен


Слайд 24

Чем плох MvcContrib.XsltViewEngine? Использованием специального объекта XsltViewData – нельзя сменить view, не меняя контроллер. Не умеет преобразовывать модель в XML.


Слайд 25


Слайд 26

Формы в XSLT


Слайд 27

Сложности с формами Формы задаются в двух местах: В XSLT задаем HTML-форму В модели – поля данных, со статусами валидации, сообщениями и др. Возникает соблазн сделать «язык форм» на базе XML-модели. Это сложное и громоздкое решение В принципе, те же проблемы у ASP.NET MVC


Слайд 28

ASP.NET Web Forms: Страшные Очень громоздкая обработка запроса Выдают избыточный, страшноватый маркап Понятные Разработка веб-форм в VS очень проста и интуитивно понятна Хочется минимизировать страх, оставив только пользу


Слайд 29

Решение Совмещаем оба подхода. От веб-формы берем только поля ввода. Весь дизайн прикладываем при помощи XSLT.


Слайд 30

Решение подробнее Веб-форма производит xHTML. xHTML=XML. Контроллер вставляет форму в модель. View копирует код формы наружу, в нужное место страницы. Browser. Post back. Контроллер передает пост-бэки в ASPX-файл. goto 1.


Слайд 31

Решение в картинках Форма (xHTML ) Controller ASPX form Model View Browser Request Request Данные (xml)


Слайд 32

Технические сложности HttpServerUtility.Execute не дает доступа к полям формы. Берем код Execute рефлектором. Некоторые нужные части HttpContext и HttpResponse закрыты. Используем reflection: HttpContext.SetCurrentHandler HttpContext.RestoreCurrentHandler HttpContext.SwitchWriter


Слайд 33

Итоги XSLT – мощный язык шаблонов XML удобен в качестве модели в MVC ObjectXPathNavigator позволяет типизированные модели Примиряет с веб-формами


Слайд 34

Сюда пишется заголовок слайда, также до 3 строк, не больше! Это – контентная область слайда. Желательно создавать новые слайды, дублируя (copy/paste) этот слайд в качестве образца, чтобы сохранить общую стилистику презентации. Также рекомендуется для набора текста использовать шрифт Trebuchet. General Hooker


Слайд 35

Спасибо за внимание! Андрей Майоров, BYTE-force xor@byte-force.com twitter.com/xorets blogs.byte-force.com/xor


×

HTML:





Ссылка: