|
клуб |
О клубе | 1 февраля 2008 года, 19:27 |
Обсуждаем XSLT. Тонкости, рецепты, хаки, производительность, особенности реализаций. |
записи по месяцам · меткам · типам |
С XSLT долгое время дела не имел, так что вопрос, может быть, элементарный - но у меня ничего не вышло. Файл common.xsl : <xsl:template name="all">
Как видно, в шаблоне для контента в переменную читается еще один XML. Проблема в том , что кусок этого XML-я потребовался в шапке. Я мог бы перетащить переменную в <xsl:template match="/"> и дальше передавать параметрами, но как-то это по-обезъяньи. |
Исходный XML
Надо отсортировать item по d в обратном порядке, выбрать 3 верхних. Три выбранных отсортировать по text() и вывести. Решение есть но оно очень громоздкое, даже не хочу его приводить, там всякие node-set много раз. А компактного и быстрого найти не смог, может кто-то решал? |
Kovaldo написал | 16 марта 2011 года, 03:28 |
Помогите решить задачу. Существует узел:
1. Как посчитать количество "break" в узле? 2. Как разбить текст на кол-во "break" и вывести каждую из этих частей без "break"? P.S.: все это нужно, чтобы оформить пагинатор на странице (ссылки на 1-2-3 страницы) |
Коллеги, Есть в мире много CMS, хороших и разных. Одна из проблем: у каждой свой закрытый мирок. Невозможно программировать универсальные решения. Хотя все в конечном итоге сводится к SQL базе данных и HTML браузеру. Нет, я нисколько не умаляю роли бизнес-логики, но там тоже все достаточно универсально: пользователи, страницы, модули, шаблоны... С другой стороны, есть такая замечательная технология - XSLT - которая поддерживается всеми популярными платформами, на которых построены многочисленные CMS.
Вопрос: как общественность относится к созданию среды для разработки CMS-независимых веб-модулей? Имеется в виду спецификация и движки под конкретные CMS. Или, может, кто-то уже знает примеры таких сред?
Мне, как автору XsltDb (XSLT-ориентированный модуль для DotNetNuke) кажется, что от этого будет существенная польза. Простейшие модули, которые, собственно, и пользуются основным спросом могут быть запросто написаны CMS-независимо. В особенной мере это касается интеграционных модулей, позволяющих собирать данные с популярных сервисов (фотогалереи, погода, ...). Они даже не завязаны на структуру данных. То же самое касается всевозможных форм обратной связи, опросов, голосований, помощников и т.д. которые создают собственную структуру данных слабо связаны с метаданными самой CMS. Если общественность считает эту тему интересной, то найдутся ли энтузиасты для работы над этой темой?
|
ertuof à neiR поделилось ссылкой | 14 января 2011 года, 19:00 |
Написано-то как хорошо. |
Шушпанчик поделился ссылкой | 24 августа 2010 года, 03:18 |
новый обратно совместимый с xslt шаблонизатор. упрощает запись многих конструкций xslt, а также добавляет несколько плюшек (сборка инклудов в один файл, добавление аттрибута в одну строку, а не в 3 и тд). написан на xslt %-) |
Есть xml, на любом его уровне может встретиться тег . В этом случае xsl должен по умолчанию возвращать ошибку если не указанно другого. Например <xsl:templte match="doc[//error]"> <error status="500"/> </xsl:templte> <xsl:templte match="doc"> ... </xsl:templte> В таком виде все ок, но хочется первый теплейт вынести в отдельный файл. Если делать это через import, то вес этого темплейта резко снижается и всегда срабатывает второй темплейт. Если использовать include то теряется возможность переопределить темплейт <xsl:templte match="doc[//error]"> Как вы обычно решаете эту задачу? P.S. в конечных файлах конечно нужно оставить возможность переопределять поведение в случае возникновения ошибки, например так <xsl:templte match="doc[foo/error]"/> или даже так <xsl:templte match="doc[//error]"/> update меня поправили, в случае include нельзя делать одинаковые match по спецификации, но на практике процессоры это обрабатывают. update 2 кажется нашел решение файл default.xsl <xsl:template match="doc[//error]"> <error status="500"/> </xsl:template> <xsl:template match="doc"> <xsl:apply-templates select="." mode="content"/> </xsl:template> а в конечных файлах подключается default.xsl <xsl:import href="default.xsl"/> <xsl:template match="doc" mode="content"> ... </xsl:template> |
Задача: Вывести все узлы присутсвующие в первой последовательности, при этом не входящие во вторую в виде списка
<!--$node1 - первая последовательность--> <!--$node2 - вторая последовательность -->
Решение №1: <ul> <xsl:for-each select="$node1 except $node2">
Решение №2 <ul> select="for $m in ($node1 except $node2) return concat('<li>', $m, '</li>')" disable-output-escaping="yes" />
Какое из этих решений наиболее быстрое? Какое из этих решений наиболее гибкое? Например в №1 можно отсортировать, как тогда быть во втором? |
ertuof à neiR поделилось ссылкой | 12 июня 2010 года, 10:30 |
( кратко ) 1. Матчинг элементов в неймспейсе по умолчанию. 2. Использование относительных путей. 3. Переменные содержат значения, не фрагменты или языковые выражения. 4. xsl:apply-templates не фича для продвинутых, а одна из основ языка. Не использовать её - большая глупость. 5. Дерево на входе - дерево на выходе. Если вам нужно что-то другое, то возможно у вас плохо с головой. 6. Неймспейсы - это вроде как трудно. 7. disable-output-escaping - это для продвинутых. 8. xsl:copy-of слишком прямолинейна. 9. Кей говорит "бугагашечки" насчет <xsl:variable name="x"><xsl:value-of select="y"/></xsl:variable> и настаивает на <xsl:variable name="x" select="y"/>. 10. Если требуется что-то поискать, то лучше использовать ключи. |
Совсем забыл тут написать, я ищу сильного xsl верстальщика, знание верстки подразумевается по умолчанию. ( читать дальше ) от 60 000 до 70 000 р. Необходимо: - отличное знание XSLT; - хорошее знание HTML и CSS; - готовность работать с XML-вида темплэйтами; - опыт работы с PHP или Python или ..., нужно будет уметь писать несложный код на Python. Желательно: - знание JS (не jquery или prototype а именно JS); - знание JSP (совсем необязательно). Обязанности: - необходимо переводить уже существующие и разрабатываемые сервисы на новую технологию; - поддержка старых сервисов (JSP). Условия: - оформление согласно ТК; - ДМС; - уютный офис недалеко от м.Алексеевская. Вас ждет работа в отличном коллективе P.S. на всякий случай ссылка на оригинал вакансии http://hh.ru/vacancy/2892016 |
| β-версия |
© 2007—2012 «Яндекс»
|
| Подписаться на комментарии к записи | ||
|---|---|---|
Получать уведомления о всех ответах в этом обсуждении. Форма не заполнена | ||
| Отписаться от комментарев к записи | ||
|---|---|---|
Получать уведомления только о тех ответах в этом обсуждении, которые адресованы лично вам. Форма не заполнена |
