Как стать автором
Обновить

Комментарии 59

За нумерацию страниц огромное Вам спасибо! Обязательно буду читать все, что Вы напишете про XSLT
Могу дать домашенее задание, правда не по рекурсивным шаблонам, но зато с этим шаблоном разобраться :)
Прикрутить туда ссылочки для перехода на 5 или 10 страниц назад или вперед.
Хотел статью делать как раз про ключи, могу добавить практического материала. Как раз необычное практическое применение шаблона построения клиентов (JavaScript или ActionScript) для веб сервисов на базе wsdl (язык описания веб-сервисов).

Говоря проще на входе есть описатель сервиса WSDL и есть шаблон XSL после преобразования получается рабочий код на JavaScript (шаблон можно расширить быстро на множество языков), который может работать с веб-сервисами. Удобно тем что XSL трансформация быстрее чем если писать полноценный парсер для WSDL.
очень интересно почитать! а рабочие примеры пока статьи нет не покажите?
Рабочие примеры есть. Но можно сразу вместе с теоретической частью о ключах и как раз сразу будет практический пример.
НЛО прилетело и опубликовало эту надпись здесь
Думаю, лучше сделать две статьи. У меня примеров с форума сайта, на котором расположена умная книжка из топика, достаточно. И там они достаточно примитивные, и явно не предназначенные для генерации кода на других языках.
Все таки, я пытаюсь донести XSLT как язык преобразования документов из одного XML в другой XML, хотя и применение его для генерации кода тоже может быть успешным.
НЛО прилетело и опубликовало эту надпись здесь
Ух ты, кажется это первая статья на Хабре по XSLT, по крайней мере блога такого точно не нашел в поиске (правда тут такой поиск, что хрен найдешь)

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

Спасибо, очень интересно. Хотелось бы статью про ошибки новичков
Точно, я бы тоже хотел увидеть новый блог посвящённый XSLT
Вообще, я видел статьи по XSLT в блоге веб-разработки.
Если считаете, что нужен отдельный блог, то думаю, что не проблема его создать. А вот кто будет постоянно в него писать, не знаю :) У меня пока что немного тем по XSLT, да и язык то на самом деле довольно простой, невозможно про него постоянно креатив выдумывать.
Не тривиальных решений там довольно не большое количество, и все они где-нибудь описаны. Конечно, встречается много тонкостей, но чаще всего это зависимость от определенного XSLT процессора или что-то далеко не очевидное по производительности. Вообщем, сложно написать очень много и по теме самого XSLT.
Хотя, все таки иногда встречаются интересные задачи, но так как это редкость, вряд ли есть необходимость описывать их для широкого круга читателей. Тем более, что пока ориентируюсь на начинающих. Тех, кто научился писать шаблоны, но не научился грамотно пользоваться языком.
А я кстати не видел.
XSLT к веб-разработке имеет весьма косвенное отношение, это отдельная, самостоятельная технология. Веб — это лишь одна из областей применения, ведь XSLT — это не только преобразование вида XML→HTML, но и XML→XML, да и еще куча других, хоть в plain-текст.

Статьи делятся на блоги не для того, чтобы в каждом было много статей, а для того, чтобы эффективно структурировать информацию. Вас ведь не удивляет, что тут есть блоги CSS, JavaScript и пр.?

Так что создавайте. Вы напишете несколько статей, m007 напишет, может кто еще подтянется.
Пока не нашел, как создать. Кто-нибудь подскажет? Можно в личку.
НЛО прилетело и опубликовало эту надпись здесь
Практический XSLT. Использование в качестве шаблонизатора. Часть 1

Практический XSLT. Использование в качестве шаблонизатора habrahabr.ru/blogs/webdev/22236/

Правильный textarea в XSLT с методом вывода XMLhttp://habrahabr.ru/blogs/webdev/27666/
Блин, достал этот автосабмит!!!
Практический XSLT. Использование в качестве шаблонизатора habrahabr.ru/blogs/webdev/22236/
Практический XSLT. Использование в качестве шаблонизатора. Часть 2 habrahabr.ru/blogs/webdev/22339/
Правильный textarea в XSLT с методом вывода XMLhttp://habrahabr.ru/blogs/webdev/27666/
XSLT Tutorial www.w3schools.com/xsl/default.asp
Про ошибки новичков даже здесь есть кстати :)
<!-- не забываем, что если собираемся работать с текстом,
то нужно и матчить именно текст,
чтобы работа вашего кода была очевидной -->
<xsl:template match="string/text()">


* This source code was highlighted with Source Code Highlighter.


В данном случае, в какую строковую функцию не передай заматченное с помощью символа точки, работать всегда будет отлично. В других случаях (match=«string», а передать в строковую функцию text()) можем получить нотисы, ворнингы, ерроры, etc.
Это не libxslt, это отдельная библиотека для XSLT. Там же ясно видно, что вызывается шаблон, также, как и в указанной мною реализации.
Хотя, посмотрел еще разок. Что-то не совсем понял :)
Знаю, что дефолтная PHP-шная libxslt поддерживает только XSLT 1.0, а следовательно стандартный tokenize в ней работать не должен.
Вы путаете str:tokenize и fn:tokenize. EXSLT — расширение XSLT 1.0. Для того, чтобы воспользоваться функцией str:tokenize в libxslt, достаточно объявить в документе соответствующее пространство имён. Подключать дополнительные библиотеки не нужно. Кроме того, str:tokenize реализован нативно и работает гораздо быстрее вашей реализации.
Ok, но
1. В браузерах все равно нет поддержки
2. Не по стандарту, то есть шаблон получится не переносимым.
1. Справедливо, но не для всех актуально.
2. Ошибаетесь, стандарт предусматривает расширения.
Может статейку по EXSLT выдадите? :)
Теперь есть отдельный блог, думаю мне и другим было бы полезно.
Я им раньше никогда не пользовался, только слышал, что оно существует :)
НЛО прилетело и опубликовало эту надпись здесь
НЛО прилетело и опубликовало эту надпись здесь
xslt — всё худшее из функционального программирования и хмл…

не надо программировать на хслт — экономьте своё время, силы и нервы.
Как XML парсер это очень мощный инструмент.

1. Напишите парсер WSDL не на XSL языке (Java, C++ и т.д.).
2. Потом напишите парсер WSDL на XSL языке.

Далее сравните количество полученых строк при первом и втором варианте.
Потом сравните устойчивость (например, в WSDL где то что то по другому разместили и ваш парсер не на XSL полетел к чертям).
Ну и наконец сравните простоту масштабирования.

P.S. 10 строчек на XSL могут решить задачу на которую с другим языком уйдет 100 и более.
как xml-парсер лучше всего подходит именно xml-парсер, а не шаблонизатор ;-)
а вот к xslt как к шаблонизатору у меня претензий почти нет (самая серёзная — громоздкость value-of).
а вот примеры из статьи на том же функциональном хаскеле записываются в 100 раз короче и в 1000 раз понятней.
Что бы на haskell'е быстро и понятно написать трансляцию WSDL в JS нужно WSDL XML Schema в алгебраические структуры данных, написать парсер, который переводит эту WSDL в эту структуру, и только после этого код трансляции станет простым и понятным.
любитель бороться с ветрянными мельницами?
Может быть еще на HTML не писать? :)
ага, но об этом с соседней теме: habrahabr.ru/blogs/webdev/47503/ ;-)
Вот я так отвечу на всю эту союачью радость — попробуйте писать на XSLT, поприменять его в практике. Более лаконичного и простого языка для создания мощного и одновременно с ним простого шаблонизатора Вы врядли найдете.
Опыт у меня разработки на XSLT — 2 года — и язык этот устраивает всем. Некоторые конструкйии несколько громоздки типа choose — но поверьте — это очень маленький минус по сравнению с массой плюсов.

А когда работаешь с удобным инструментом — как то абсолютно пофигу худший он или лучший из языков функционального программирования ;)
а у меня — 3. то есть в полтора раза длинее =)
я не знаю, что там у вас длинее в 1.5 раза ))) но язык реально удобный и хороший. если против — прошу аргументы ;)
я уже написал. *программы* на нём получаются громоздкие, запутанные, тормозные и черезжопные.
это не аргументы, это «it depends» ;)
да, и на нем не пишут программы — милости прошу в вики прочесть что такое xslt ;) Хотя конечно программы на чему кгодно можно писать при наличае определнного вида извращенности ) Для программа — да, увы и ах — громоздко, тормознуто и черзжопно. Но както не есть хорошо писать программы на языке для потокового парсинга :) Вы же не ездите на машине с квадртаными колесами — ксттаи ездить будет… но както тормознуто и черезжопно ;)
примеры из статьи — программы.
Пример из статьи — синетика. Редко ктото такое делает разделение на страницы внутри xslt, а вот для того чтобы научится ДУМАТЬ на нем — вполне подходящая тема.
*синтетика
Не спорь, ему уже минусов понаставили все, кто хотел :)
мой опыт ковыряния шаблонов на различных шаблонизаторах позволяет мне утверждать, что ты ошибаешься чуть менее, чем полностью. такие загогулины делали, делают и будут делать, прикрываясь «логикой отображения», «неспособностью повлиять на формат входящих данных» и подобными обучающе-развивающими примерами.

XSLT — декларативный язык. Видимо поэтому ваш функциональный подход портил вам время силы и нервы.
все функциональные языки декларативны.
Ну если вы уложите в 87 строчек парсинг WSDL чтобы на выходе получался рабочий клиент (не важно какой будет WSDL главное чтобы спецификации следовал), то тогда соглашусь с вами что на хаскеле да лучше ;)

Кроме того шаблон не привязан ни к какой платформе совершенно, ему только процессор нужен, который скачивается и ставится за 5 минут.
Надо бы создать блог xslt — думаю многим будет интересно читать.
Создал блог, перенес статью. Ждите новых :)
Тоже бы хотел написать пару статей по xslt, только кармы нет совсем…
Напиши, дай кому-нить оценить, накинут кармы. Потом запостишь в личный, еще накинут, потом и сюда в блог перенесешь.
xslt — это здорово, но меня беспокоит производительность таких решений.
производительность весьма на достойном уровне, чтобы она начала беспокоить — надо иметь определнную задачу ))) Обычно все упирается далеко не в парсер, а в БД например ;)
Если говорить про XSLT, как про шаблонизатор, то никто не отменял кеширование.
по моим наблюдениям ( ~ 4-5 лет опыта работы с xml & xslt), с производительностью проблем не возникает, при условии правильного использования конструкций языка (реже использовать for-each, на пример ) и знания механизмов работы. Как и любой другой язык поддается оптимизации.

Если необходимо обрабатывать файлы большого размера (>1 Gb), то можно использовать Intel® XML Software Suite.

но надо учитывать, что различные парсеры(или при работе на разных языках) по-разному работают, например — при работе с xml & xslt на .Net — шаблоны собираются в сборки и остаются загружеными(даже если не все шаблоны используются) — если я не ошибаюсь.

Насчет «необычности» языка — он просто другой. Для программистов на Java, C++, C#, такие языки как javascript, perl, python — тоже покажутся очень странными.
monsterzz.info/2008/06/for-each_if_xsl/

а кавычки лучше двойные или одинарные использовать? =)
двойные. одинарные используются в выражениях.… если не ошибаюсь.
я про скорость спрашивал…
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Истории