За последние 24 часа нас посетил 18131 программист и 1684 робота. Сейчас ищут 1119 программистов ...

xstyle - xslt с человеческим лицом

Тема в разделе "Решения, алгоритмы", создана пользователем tenshi, 24 авг 2010.

  1. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    tenshi
    Ну уж точне не стану прифигачивать XSLT вместо стандартного шаблонизатора. XML ничем, кроме пары тегов и более жёстких правил не отличается от HTML. RSS у меня обычным PHP шаблонон генерится :)

    Насчёт стыковки - проблема в том, что наверно 99% делают это бездумно. Мало кто работает с XML базами и документами. Поетому часто это выглядет так: SQL => Array => Array structure => XML => XSLT processor => Browser вместо SQL => Array => PHP template to HTML => Browser как это и должно быть.

    Много вы знаете CMS'ок, которые работают именно с массивами XML документов и XML базами? Помоему всё они так или иначе опираются на какую-то из реляционных СУБД, которая собственно и хранит данные.

    Так что не стоит путать вещи - одно дело генерация определённых XML документов типа RSS, Atom, каких-то експортеров данных. Другое работать с полным спектром XML технологий, когда вы делаете XQuery запросы в XML базу данных, получаете XML документ, у вас сделаны XML Schema, style sheets и соответственно XSLT трансформации. И собственно всё это может склеивать PHP для обработки запроса, только вот никаких конвертацией делать вообще не нужно: Сделал запрос на XQuery, получили XML документ, скормили его в XSLT трансформатор и отдали в браузер - ИМХО, это правильно.
    ИМХО, не правильно мудохать SQL базу для получения результата и потом конвертировать его в XML только для того, что XSLT использовать в кайф как шаблонизатор. Есть выражение - use the right tool for the job. ИМХО, именно тот случай.
     
  2. tenshi

    tenshi Активный пользователь

    С нами с:
    1 июн 2010
    Сообщения:
    191
    Симпатии:
    0
    в том-то и дело, что у тебя будет 3 шаблона, которые придётся поддерживать в синхронности. надо добавить какое-то дополнительное поле - извольте редактировать каждый шаблон, вставляя одинаковые куски кода. впрочем, да, это плохой пример.


    SQL => Array => Array structure => XML => XSLT processor => Browser
    SQL => Array => Array structure => PHP template to HTML => Browser

    причём "=> PHP template to HTML =>" при использовании всяких шаблонизаторов высокого уровня получается даже медленнее чем "> XML => XSLT processor =>". а знаешь почему? xslt - это как регулярка. быстро компилируется, быстро исполняется. а всякие смарти - это груда интерпретируемого кода.
     
  3. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    tenshi
    А как будто и на XSLT не придётся делать 3 разных шаблона для того, что бы выдавать 3 разных формата данных?

    Когда я говорю PHP template, это значит голый PHP без каких либо шаблонизаторов дополнительных. По сути это include и вставки PHP кода.
     
  4. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    Я думаю, что в воде у кита всё же преимущество...
     
  5. tenshi

    tenshi Активный пользователь

    С нами с:
    1 июн 2010
    Сообщения:
    191
    Симпатии:
    0
    Psih, в хслт будет 4 стайлшита, один с общими шаблонами и 3 для отличающихся частей. соответственно, если мы добавляем какой-то дополнительный элемент, то скорее всего шаблон для него будет один в общем стайлшите.

    include - довольно медленная штука. поэтому будут либо тормоза, либо слабый реюзинг и процветающая копипаста
     
  6. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    tenshi
    А почему это он медленный? :) Он не чуть не медленнее, чем остальное. Это одна быстрая операция, особенно когда ещё стоит opcode cache, который кеширует всё в памяти.
     
  7. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Чем XML, лучше сразу генерить HTML и потом обрабатывать
     
  8. tenshi

    tenshi Активный пользователь

    С нами с:
    1 июн 2010
    Сообщения:
    191
    Симпатии:
    0
    даже с ним медленная. не так сильно конечно

    как обрабатывать? речь о пре и пост хуках? о да, добавлять куски хтмл или перепарсивать его регулярками из-за невозможности работать с дом - это очень элегантное решение
     
  9. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    А DOM-документ - это бинарный исполняемый файл? =) Что-то мне подсказывает, что парсится он тоже регулярками.
     
  10. tenshi

    tenshi Активный пользователь

    С нами с:
    1 июн 2010
    Сообщения:
    191
    Симпатии:
    0
    парсится он один раз
     
  11. Psih

    Psih Активный пользователь
    Команда форума Модератор

    С нами с:
    28 дек 2006
    Сообщения:
    2.678
    Симпатии:
    6
    Адрес:
    Рига, Латвия
    tenshi
    По хорошему для чистоты эксперимента нужно взять сложную страницу, собираемую из 4-5 блоков, сделать оба варианта и погонять тесты. Причём под сложной я понимаю не пол килобайта шаблонов, а так нормально, килобайт 7-10, как в реальных страницах.
     
  12. tenshi

    tenshi Активный пользователь

    С нами с:
    1 июн 2010
    Сообщения:
    191
    Симпатии:
    0
    не вопрос, предлагай какую страницу будем делать?
     
  13. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    tenshi
    возьми на своё усмотрение
     
  14. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    Костян
    это такое тонкое nobody cares ?)
     
  15. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    iliavlad
    да нет наверно, пусть продемонстрирует, а то втирает-втирает тут, я тоже могу базарить...
     
  16. tenshi

    tenshi Активный пользователь

    С нами с:
    1 июн 2010
    Сообщения:
    191
    Симпатии:
    0
    на своё усмотрение я уже взял. ваша очередь
     
  17. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    tenshi
    а результаты тестов можно посмотреть? вместе с кодом самих тестов?
     
  18. tenshi

    tenshi Активный пользователь

    С нами с:
    1 июн 2010
    Сообщения:
    191
    Симпатии:
    0
    ссылка в посте
     
  19. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    мда... поржал... Это тесты на нотисы варнинги фатал эроры и прочую хрень, которые ничего не показывают еще .... Пять. Садись...
     
  20. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    капец. это клиника
     
  21. tenshi

    tenshi Активный пользователь

    С нами с:
    1 июн 2010
    Сообщения:
    191
    Симпатии:
    0
    ты видимо смотрел только quicky и smarty2? к сожалению безинклудовая реализация в них бажная.
    остальные тесты нормально работают

    а по подробней, о, великий гуру?
     
  22. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    нихрена они не работают, я никаких цифр не увидел...
     
  23. tenshi

    tenshi Активный пользователь

    С нами с:
    1 июн 2010
    Сообщения:
    191
    Симпатии:
    0
    смотри логи ошибок значит
     
  24. Костян

    Костян Активный пользователь

    С нами с:
    12 ноя 2009
    Сообщения:
    1.724
    Симпатии:
    1
    Адрес:
    адуктО
    бегу и падаю...
     
  25. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    tenshi
    тут даже есть тема специальная http://www.php.ru/forum/viewtopic.php?t=19244

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