XSL

Задаем вопросы по XSL: чем он лучше остальных шаблонизаторов, примеры решений и хороших практик, инструменты. Самые интересные вопросы будут добавляться прямо в статью. Большая просьба не задавать вопросов вроде «какую книгу по XSL советуете прочитать», «где найти уроки для начинающего кодера», «помогите найти ошибку в коде» и тому подобное — все это останется без ответа, по крайней мере с моей стороны.

9 комментариев

  1. 13 августа 2009

    есть идея собрать сложные варианты логики, не реализуемой простым шаблонированием. чтобы вывести как исключения. а всё что не исключение, делать через match. хочеться услышать различные варианты и мнения за/против. можно с примерами. простите, просто больная тема :)

    Хм, не понял, о чем ты. Имеется в виду использование xslt extensions?

  2. Vii
    29 августа 2009

    Сильно ли влияют конструкции вида <xsl:text>Какой-то текст</xsl:text> и <xsl:value-of select=”concat(’my_class ‘, $_class)” /> на производительность если шаблоны пропускаются через парсер (saxon или libxslt), а не отдаются на “растерзание” браузера? :)

    Можешь предложить какие-нибудь рекомендации по оптимизации xslt-шаблонов?

    Пока, к своему сожалению, я не копался в производительности XSL-трансформеров, да и рекомендаций каких-то конкретных не встречал (в основном только по внешнему виду и организации шаблонов). Могу только обратить внимание, что в Apache Xalan есть такая вещь как предварительная компиляция XSL-шаблона в Java-класс, что повышает производительность. Подробнее читайте на страничке XSLTC.

  3. 1 сентября 2009

    Сергей, оправдана ли такая «экономия на спичках»: вместо ab писать ?

  4. 1 сентября 2009

    Блин, подсказки под формой добавления коммента не хватает :(

    Сергей, оправдана ли такая «экономия на спичках»: вместо <xsl:text>a</xsl:text><xsl:value-of select=”text()”/><xsl:text>b</xsl:text> писать <xsl:value-of select=”concat(’a', text(), ‘b’)”/>?

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

  5. Георгий
    10 сентября 2009

    Сергей, используете ли в работе XSLT и XPath второй версии?
    Если да, то, если не секрет, каким процессором пользуетесь для обработки?
    Если нет, то почему?
    Вообще, каковы, на ваш взгляд, перспективы этих технологий? Два с половиной года назад они получили статус рекомендаций w3c, но весь buzz вокруг них, кажется, утих ещё году в 2005-ом.

    Второй версией пока не пользовался. Насколько я знаю, ее поддерживает только Saxon, а все популярные языки программирования (PHP, Parser, Python) используют libxsl, который понимает только первую версию. О перспективах пока сложно говорить из-за указанной слабой поддержки со стороны трансформеров.

  6. Евгений
    14 октября 2009

    Суть: есть такой вызов , сам шаблон лежит где-то в пределах проекта. Можно ли перед вызовом делать проверку на существование вообще этого шаблона и если его такого нет, то просто не вызывать (всё это для того, чтобы не выдавалась ошибка при отсутствии такого шаблона)?

    Как проверить — не знаю, стандартных средств не нашел, возможно, есть в каких-нибудь расширениях есть. Я бы посоветовал в таком случае вместо < использовать . Тогда вы создать заглушку, которая ничего не выводит, а также сможете перекрыть ее шаблоном, который что-то делает. Можно, конечно, создать заглушку и для именованного шаблона, но в описанном мной примере больше гибкости.

  7. Василий Колбасилий
    19 октября 2009

    Расскажите каким образом у вас организованы файлы проекта? Как формируете лайот страниц? Я ищу решение, гибкое простое и более-менее универсальное. Решил изучить CodeIgniter, для практики переведя один из проектов, и уже разочаровыван в модели MVC. Возможно, решение - это xsl? Я не хочу заморачиваться на ООП ради ООП.

    Структура такая:

    main.xsl
        common.xsl
        html.xsl
    

    main.xsl — основной шаблон, в нём описываются все основные блоки лэйаута. common.xsl — всякие сервисные штуки, вроде генерации меню из XML-структуры, вывод дат, обработка строк и т.д. html.xsl — вывод HTML тэгов. Каждый контентный XML-тэг обязательно проходит через свой шаблон, фильтруя ненужные данные и добавляя нужные атрибуты и классы. Если мне нужно вывести содержимое какого-нибудь блока, я матчу его на шаблон вроде <xsl:apply-templates select="myblock" mode="html_inner"/>. Есть шаблон <xsl:template match="*" mode="html_inner">, который просто начинает матчить правильные элементы (определяются в энтити) внутри переданного контекста через шаблон <xsl:templates match="*" mode="html">. Таким образом, каждый элемент у меня обязательно проходит через шаблон, а я, в свою очередь, могу в нужный момент перехатить необходимые элементы, перекрыв шаблон, и вывести то, что мне нужно.

  8. 28 октября 2009

    Здравствуйте, Сергей. Для верстки вы используете eclipse + aptana. А чем пользуетесь для работы с xslt? Altova, Oxygen или может быть один из плагинов для eclipse? И если можно почему вам выбор пал на тот или иной инструментарий?

    Использую стандартный XSL редактор из Web Tools Project. В принципе, мне его хватает, так как нужен только code complete и Zen Coding. Для дебага XSL-шаблонов в CMS сейчас пишу (ну ладно, пока думаю о нём, но уже есть первая альфа-версия) свой инструмент.

  9. Armen
    16 ноября 2009

    Здравствуйте Сергей, прошу минутку вашего внимания, нужна ваша помощь!
    Я изучаю XHTML и CSS уже больше полугода, вышел на более менее неплохой уровень, теперь хочу двигаться дальше.
    Помогите разобраться, что раньше мне нужно начать изучать, JavaScript(немного изучал, более менее имею представление) или XML(никогда не изучал.)
    У меня есть много хорошей литературы по обоим предметам, только вот не знаю от куда начать, так как времени уйдет много и чтоб потом не возвращаться назад и не начинать учить что-то из этих языков заново, понимая, что сначала нужно было уделить время другому, я прошу вашей помощи, помогите пожалуйста начинающему!
    Спасибо!

Комментировать

Powered by Zen Coding