xslt: сначала ждали, теперь догоняем. Кому это выгодно и...

25
Как совершается выбор? Технология XSLT

Upload: mild

Post on 22-Jun-2015

1.830 views

Category:

Technology


0 download

DESCRIPTION

Сергей Антонинко, системный архитектор, Юмисофт, www.umi-cms.ru

TRANSCRIPT

Page 1: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Как совершается выбор?

Технология XSLT

Page 2: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Нужна шаблонизация, которая

• Четко разграничивает обязанности

• Позволяет повторное использование

• Позволяет сменить технологию

• Сейчас (или скоро) в мейнстриме

• Не затухнет через год

• Совместимость

Page 3: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Популярные варианты?

• Smarty

• Native PHP + MVC

• Собственные шаблоны (“TPL”)

• XSLT

• …

Page 4: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Недостатки TPL

• Индивидуальность

• Недостаточная гибкость

• В конце концов «eval()» => смешение логик

• Привязанность к решению

• Улучшение шаблонизатора => проблемы с совместимостью

Page 5: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Недостатки TPL

/%([A-zА-Яа-я0-9]+\s+[A-zА-Яа-я0-9_]+\([A-zА-Яа-я \/\._\-\(\)0-9%:<>,!@\|'&=;\?\+#]*\))%/mu

/%([A-z?-?А-я \/\._\-\(\)0-9%:<>,!@\|'&=;\?\+#]*)%/m

Page 6: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Недостатки Smarty

• Толкает к смешению логик

• Зависимость от бизнес-логики

• Легко сломать

• Сложно поддерживать

• Сложно расширять

Page 7: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Кратко

XML — недавно исполнилось 10 лет XML уже внедрен почти везде XSLT — стандарт утвержден в 1999

году

Page 8: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Западный опыт

• XML — стандарт де-факто

• XSLT — стандарт де-факто

– .NET– Зарубежные коробочные CMS (CeBIT

2008)– Чистые XML-XSLT фреймворки

• UTF-8 стандарт де-факто

Page 9: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Наш опыт

• Специфичная технология

• Множество мифов

– Миф о сложности– Миф о недостатке кадров

• Повсеместное использование альтернатив

– TPL– Smarty– ...

Page 10: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

XSLT

• Полная абстракция данных от представления

• Независимость представления и бизнес-логики

• Гибкость

• Наглядность

• Структурированность

• Предпосылки к мультиязычности

• Настоящая кроссплатформенность

Page 11: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Пример “наглядности”

<items>

<item id="22896" link="/" name="Добро пожаловать" />

<item id="16520" link="/downloads/" name="Скачать" />

<items>

<item id="22997" link="/downloads/manual/" name="PHP Manual" />

</items>

<item id="16521" link="/about/" name="Компания" />

</item>

Page 12: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Естественное разделение представления и бизнес-логики

XML

back-end

XSLT

HTML WAP XML?

XML

XML

Page 13: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Децентрализованность

• Связь intranet-internet сайтов

• Mash-up'ы

– Google Picasa– wordpress– Новости– Ozon (http://shop.lyxsus.ru/)

• Связь компонент, на разных платформах

Page 14: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

AJAX

• XML уже готов

• Возможность повторного использования шаблонов (?)

Page 15: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

«Вкусности» XSLT

• Условия

• Циклы

• Расширения (exslt)

• DTD

• Тестирование по XSD-схемам

• Возможности повторного использования

Page 16: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

История web-разработки

• Развитие рынка web-разработки в СНГ

• Переход от HTML, JS

• Бесплатный PHP и др.

• Массовость используемых технологий

Page 17: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Нетехнические факторы

• Примеры неэффективного использования

• Инертность

• Опыт клиентского использоваия

• Миф о сложности

• Необходимость перехода

• Склонность к изобретанию велосипедов

• Недоверие к новым технологиям

• «Невыгодность»

Page 18: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Недостатки

• Декларативный язык

– Обучение– Переход

• Стриктовость

• Скорость

Page 19: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Обучение

• С чистого листа

• С бекграундом верстальщика

• С бекграундом программиста

Page 20: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Задача

Вывести меню, Подсветить четные пункты

Без if, for-each, call-template

<items>

<item link="/" name="Добро пожаловать" />

<item link="/downloads/" name="Скачать" />

<items>

<item link="/downloads/manual/" name="PHP Manual" />

</items>

<item link="/about/" name="Компания" />

</item>

Page 21: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Пример

<xsl:template match="items"><ul class="menu"><xsl:apply-templates select="item" /></ul></xsl:template>

<xsl:template match="item"><li><a href="{@link}"><xsl:value-of select="@name"/></a><xsl:apply-templates select="items" /></li></xsl:template>

<xsl:template match="item[position() div 2 = 1]"><li class="odd"><a href="{@link}"><xsl:value-of select="@name"/></a><xsl:apply-templates select="items" /></li></xsl:template>

Page 22: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Технология XSLT

Антонинко СергейUmisoft

Е-mail: [email protected]

Page 23: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Streams

© ООО "Юмисофт", 2007

schema://path/

URI XML Document

UDF()

Stream wrapper class

Класс-обертка реализует интерфейс для работы с пользовательскими схемами

Адрес URIЛогика обработки URI определяется пользователем в зависимости от schema

На входе URI на выходе готовый XML Document, который является результатом document()

Page 24: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Запрос по пользовательской схеме

“Взять сторонний XML-документ и применить к нему шаблоны”

<xsl:template match=“/”><xsl:apply-templates

select=“document(‘my://some/ud/path’)” /></xsl:template>

Page 25: XSLT: сначала ждали, теперь догоняем. Кому это выгодно и что вы теряете?

Связывание XML и XSLT

© ООО "Юмисофт", 2008

MAPPING

XML XSL

Жесткое связывание

XML XSL

XML XSL

XML XSL

Динамическое связывание

1 1