Пишу, по большей части, про историю, свою жизнь и немного про программирование.

Сайт, RSS и браузерный XSLT

Мне последние три года не даёт покоя мысль: вот у нас есть RSS на сайтах, он же — XML, что мешает взять его за основу, наложить на него XLST через браузерный движок и получить оформленный сайт? Зачем делать аж два разные источника?

Листалки вперёд/назад, ссылки на комментарии — всё есть в расширениях, для остального RSS можно расширить самостоятельно. Никто ещё ничего такого не сделал?

27 комментариев
Вадим Макеев (pepelsbey.moikrug.ru) 2010

Делали, конечно. Только там, насколько я помню, всё упирается в слабую и очень разную поддержку XSL в браузерах. Кажется одна из версий сайта jQuery (когда ещё с красными пирамидками на тёмно-синем фоне) была собрана на XML+XSL.

Живые примеры почему-то вылетели из головы.

Евгений Степанищев (bolknote.ru) 2010

Комментарий для pepelsbey.moikrug.ru:

Сделать кроссбраузерную обвязку не проблема, надо порыться, посмотреть с какими проблемами люди сталкивались.

ELV1S (elv1s.ru) 2010

Я знаю серъёзный недостаток: сайт очень сильно упадёт в выдаче поисковиков.

Года 3 назад проверял. Перевёл usercss.ru на XSLT. Вскоре, в Гугле опустился на 20 позиций, из выдачи Яндекса пропал воовсе. Надеюсь, ситуация изменилась.

ELV1S (elv1s.ru) 2010

http://xml.pro-radio.ru/  — единственный, известный мне, работающий на XSLT сайт.

zencd.livejournal.com 2010

Не понимаю зачем вообще объединять RSS с сайтом? Даже не представляю о чём точно идёт речь. РСС — это одно: лента новостей. Сайт — это другое: сайдбары, навигация, поиск, куча разнородной информации слепленной вместе. Не все сайты — блоги.

Есть связка XML + клиентский XSLT, но она сама по себе, при чём здесь RSS?

Или я чего-то не понял?

Евгений Степанищев (bolknote.ru) 2010

Комментарий для elv1s.ru:

Интересно, почему падает выдача? Из-за отсутствия всяких там Hx, strong?

Евгений Степанищев (bolknote.ru) 2010

Комментарий для zencd.livejournal.com:

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

Или я чего-то не понял?

Не знаю, попробую ещё раз. Есть источник данных в формате XML (точнее — RSS), накладываем на него XLST, получаем сайт. При этом RSS тоже остаётся.

Евгений Степанищев (bolknote.ru) 2010

Комментарий для elv1s.ru:

http://xml.pro-radio.ru/  — единственный, известный мне, работающий на XSLT сайт.

Как-то бедненько.

kuchin.livejournal.com 2010

FeedBurner оформляет свои RSS фиды через XSLT.

NV (elv1s.ru) 2010

Комментарий для Евгения Степанищева:

Я даже пробовал XML с H[1-6], strong. http://usercss.ru/index.xml
Дело скорее в Content-Type. Поисковики не любят XML.

Евгений Степанищев (bolknote.ru) 2010

Комментарий для elv1s.ru:

Может отдавать им text/html? Для XSLT всё равно, читалкам — тоже.

Евгений Степанищев (bolknote.ru) 2010

Комментарий для kuchin.livejournal.com:

Странно, но мой фид не оформлен.

wiktar (wiktar.com) 2010

Комментарий для Евгения Степанищева:

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

NV (elv1s.ru) 2010

Комментарий для Евгения Степанищева:

По User-Agent’у проверять? Есть подозрение, что могут забанить за клоакинг.

Евгений Степанищев (bolknote.ru) 2010

Комментарий для wiktar.com:

Встречал наверняка :) blog.yandex.ru ищет как раз по RSS. Кроме того, можно просто выдавать text/html.

Евгений Степанищев (bolknote.ru) 2010

Комментарий для elv1s.ru:

Зачем проверять? Всегда выдавать text/html, а XSLT накладывать через JS.

NV (elv1s.ru) 2010

Комментарий для Евгения Степанищева:

Я так не умею :-)
Можно попробовать.

zero-sharp.livejournal.com 2010

Можно зайти с другой стороны, в стиле hAtom: делать что-то, что выглядит как feed из оригинального html.

wiktar (wiktar.com) 2010

Комментарий для Евгения Степанищева:

Ну, это читинг :) blog.yandex.ru именно под это и заточен :)).

Но в остальном, факт.

В общем, это будет очень интересный proof-of-concept.

Евгений Степанищев (bolknote.ru) 2010

Комментарий для wiktar.com:

Что именно читинг? :)

blog.ad.by 2010

Я пробовал и иногда использую схему с XSLT на клиенте. Работает.

Проблемы следующие:
1) Режим высокой безопасности в IE не дает запускать XSLT-процессор. А этот режим увы корпоративная реальность в наши дни. Не везде, но бывает, что от него не избавиться.
2) Индексация поисковиками. Решается через клоакинг, что может быть чревато, хотя конкретных примеров у меня нет.
3) Наличие феерических глюков даже в самых современных браузерах. Например сафари и хром до сих пор не починили функцию document и директиву include. Ну и куда ты без них уедешь? Очень недалеко.
4) Наличие феерических глюков в js-библиотеках. Это понятно.
5) Куча браузеров без XSLT: мобильные и старьё всякое.
6) Скорость загрузки сайта. xslt-процессор подключает шаблоны строго последовательно. Никакой параллельности.
7) Глюки с кешированием. Например IE нужно перезапускать постоянно, он иногда жестко запоминает результат первого запроса шаблона.

В общем, сейчас отлаживаю промежуточную схему — серверный xslt-процессор плюс анализ юзер-агента. Одним отправлять готовое, другим — детали для сборки.

Евгений Степанищев (bolknote.ru) 2010

Комментарий для blog.ad.by:

Режим высокой безопасности в IE не дает запускать XSLT-процессор

Как не даёт? Сайт консультанта так работает, у них же запускается.

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

Да зачем? Просто выдаём text/html всегда

Например сафари и хром до сих пор не починили функцию document и директиву include

Херассе. Не работает вообще или есть известные обходимые глюки?

Куча браузеров без XSLT: мобильные и старьё всякое.

Ну, старьё, бывает, не интересно, пусть RSS читают, а современные мобильные это поддерживают.

Скорость загрузки сайта. xslt-процессор подключает шаблоны строго последовательно. Никакой параллельности.

Тут надо смотреть, может через JS как-то удастся решить

В общем, сейчас отлаживаю промежуточную схему — серверный xslt-процессор плюс анализ юзер-агента

Тоже выход, да. А в качестве XML RSS используется?

blog.ad.by 2010

Комментарий для Евгения Степанищева:

  1. Про консультант ничего не знаю, не видел его. В любом случае — сомнительно, т. к. ActiveX отключается полностью, а XSLT-процессор в IE это именно ActiveX-компонент. Возможно они запускают серверную трансформацию. Возможно есть какой-то хитрый способ включить ActiveX, которого я не знаю. Как-то так.
  2. про text/html. есть два пути трансформации на клиенте: JS и ?xml-stylesheet. Так вот IE не запустит трансформацию во втором случае, если ты отдаешь документ как text/html.
  3. про инклуд — http://code.google.com/p/chromium/issues/detail?id=8441 про документ не помню точно, там вроде просто относительные пути нельзя было использовать при работе из JS. через ?xml-stylesheet вроде работало. Т. е. методы борьбы есть.
  4. Глюков вообще очень много. Почитай внимательно http://ajaxandxml.blogspot.com/search/label/XSLT
  5. нету у мене RSS. просто XML. Причем дополненный разными «предкалькулированными» значениями, т. к. увы, но EXSLT мало где поддерживается, а XSLT беден функциями.
Евгений Степанищев (bolknote.ru) 2010

Комментарий для blog.ad.by:

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

Не припомню у них ActiveX, наоборот, кажется там через какой-то JS без всяких ActiveX.

про text/html. есть два пути трансформации на клиенте: JS и ?xml-stylesheet. Так вот IE не запустит трансформацию во втором случае, если ты отдаешь документ как text/html.

Может выдавать для IE другой content-type?

blog.ad.by 2010
  1. Ну вообще чисто яваскриптовые реализации XSLT-процессоров есть. Например http://code.google.com/p/ajaxslt/ Сам не пробовал, скорость очевидно будет ужасная.
  1. content-type. Ну вот и получается, что без юзер-агента никуда. Именно поэтому я и собрал сейчас серверный процессор и буду просто понемногу переводить обработку на гарантированно рабочих клиентов. Такой подход дает возможность решать проблемы последовательно.

А вообще мне идея с RSS+XSLT кажется красивой и работоспособной.

Евгений Степанищев (bolknote.ru) 2010

Комментарий для blog.ad.by:

1) я имею ввиду, что там как-то DOM/JS-вызов, но могу путать, давно смотрел.

blog.ad.by 2010

Комментарий для Евгения Степанищева:

На заметку
http://www.ibm.com/developerworks/ru/library/x-think40/index.html