ПоискПочтаКалендарьДеньгиМой КругФоткиНародОткрытки
Войти


Чтобы получить доступ ко всем возможностям Я.ру, создайте страницу или , если у вас она уже есть.
userpic

клуб  

Присоединившись к клубу, вы сможете вывешивать фотки в галерее и создавать новые темы для обсуждения. Обсуждаемые темы клуба будут появляться на странице «Что нового».
Вступить в клуб
О клубе
1 февраля 2008 года, 19:27
Обсуждаем XSLT. Тонкости, рецепты, хаки, производительность, особенности реализаций.
В клубе действуют правила.
Правила клуба
Первое (и, надеюсь, единственное) правило клуба

За две жалобы от постоянных участников клуба — бан.

PS. Навеяно
записи по месяцам · меткам · типам

выделить все / снять выделение

Показать
mausglov написал
23 ноября 2011 года, 15:31
userpic
проблемы с - возможно, я не так решаю задачу?

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

Файл common.xsl :

<xsl:template name="all">
    <xsl:call-template name="head" />
    <xsl:call-template name="main" />
</xsl:template>

<xsl:template name="head">
    <!-- maybe custom head? -->
</xsl:template>

<xsl:template name="main">
    <xsl:call-template name="content" />
</xsl:template>


Файл detail.xsl (и таких файлов несколько):


<xsl:include href="common.xsl"/>

<xsl:template match="/">
    <xsl:call-template name="all" />
</xsl:template>


<xsl:template name="content">
    <xsl:if test="/some-xpath">
        <xsl:variable name="subbody" select="document(...)" />
        <xsl:call-template name="custom-subbody" />
    </xsl:if>
</xsl:template>

<xsl:template name="custom-subbody">
</xsl:template>

 

Как видно, в шаблоне для контента в переменную читается еще один XML. Проблема в том , что кусок этого XML-я потребовался в шапке. Я мог бы перетащить переменную в <xsl:template match="/"> и дальше передавать параметрами, но как-то это по-обезъяньи.
Попробовал туда же ( в <xsl:template match="/"> ) вставить <xsl:element name="" select="document(...)" /> вместо переменной - во вложенных шаблонах всё отлично заработало через абсолютные пути, но теперь перед шапкой выводится этот импортированный XML .
Может ,я что-то элементарное забыл?
Подскажите, как следует действовать в таких случаях.

Андрей Сумин написал
7 апреля 2011 года, 12:58
userpic
Задача
Исходный XML


    <items>
        <item d="5">a</item>
        <item d="3">c</item>
        <item d="6">d</item>
        <item d="4">b</item>
    </items>


Надо отсортировать item по d в обратном порядке, выбрать 3 верхних.
Три выбранных отсортировать по text() и вывести.

Решение есть но оно очень громоздкое, даже не хочу его приводить, там всякие node-set много раз.
А компактного и быстрого найти не смог, может кто-то решал?
Kovaldo написал
16 марта 2011 года, 03:28
userpic
Помогите с XPath

Помогите решить задачу.

Существует узел:

<text>

бла бла бла

break

бла бла бла

break

бла бла бла

</text>

1. Как посчитать количество "break" в узле?

2. Как разбить текст на кол-во "break" и вывести каждую из этих частей без "break"?

P.S.: все это нужно, чтобы оформить пагинатор на странице (ссылки на 1-2-3 страницы)

Антон Бурцев написал
24 января 2011 года, 18:39
userpic
Cross-CMS разработка. Каковы перспективы?

Коллеги,

Есть в мире много CMS, хороших и разных. Одна из проблем: у каждой свой закрытый мирок. Невозможно программировать универсальные решения. Хотя все в конечном итоге сводится к SQL базе данных и HTML браузеру. Нет, я нисколько не умаляю роли бизнес-логики, но там тоже все достаточно универсально: пользователи, страницы, модули, шаблоны...

С другой стороны, есть такая замечательная технология - XSLT - которая поддерживается всеми популярными платформами, на которых построены многочисленные CMS.

 

Вопрос: как общественность относится к созданию среды для разработки CMS-независимых веб-модулей? Имеется в виду спецификация и движки под конкретные CMS. Или, может, кто-то уже знает примеры таких сред?

 

Мне, как автору XsltDb (XSLT-ориентированный модуль для DotNetNuke) кажется, что от этого будет существенная польза. Простейшие модули, которые, собственно, и пользуются основным спросом могут быть запросто написаны CMS-независимо. В особенной мере это касается интеграционных модулей, позволяющих собирать данные с популярных сервисов (фотогалереи, погода, ...). Они даже не завязаны на структуру данных. То же самое касается всевозможных форм обратной связи, опросов, голосований, помощников и т.д. которые создают собственную структуру данных слабо связаны с метаданными самой CMS.

Если общественность считает эту тему интересной, то найдутся ли энтузиасты для работы над этой темой?

 

ertuof à neiR‬ поделилось ссылкой
14 января 2011 года, 19:00
userpic
The zen of XSLT
Написано-то как хорошо.
Шушпанчик поделился ссылкой
24 августа 2010 года, 03:18
userpic
XStyle - XSLT с человеческим лицом
новый обратно совместимый с xslt шаблонизатор. упрощает запись многих конструкций xslt, а также добавляет несколько плюшек (сборка инклудов в один файл, добавление аттрибута в одну строку, а не в 3 и тд). написан на xslt %-)
Андрей Сумин написал
24 июня 2010 года, 13:07
userpic
Темплейт по умолчанию
Есть 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>
Евгений Асланов написал
15 июня 2010 года, 14:10
userpic
Цикл, что быстрее

Задача:

Вывести все узлы присутсвующие в первой последовательности, при этом не входящие во вторую в виде списка

 

<!--$node1 - первая последовательность-->

<!--$node2 - вторая последовательность -->

 

Решение №1:

<ul>

  <xsl:for-each select="$node1 except $node2">
    <li><xsl:value-of select="." /></li>
  </xsl:for-each>
</ul>

 

Решение №2

<ul>
   <xsl:value-of

         select="for $m in ($node1 except $node2)

                     return concat('&lt;li&gt;', $m, '&lt;/li&gt;')"

         disable-output-escaping="yes" />
</ul>

 

Какое из этих решений наиболее быстрое?

Какое из этих решений наиболее гибкое? Например в №1 можно отсортировать, как тогда быть во втором?

ertuof à neiR‬ поделилось ссылкой
12 июня 2010 года, 10:30
userpic
Майкл Кей: Десятка наиболее распространенных ошибок... (in english)
( кратко )
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. Если требуется что-то поискать, то лучше использовать ключи.
Андрей Сумин написал
27 мая 2010 года, 12:01
userpic
Вакансия, XSLT, HTML верстальщик
Совсем забыл тут написать, я ищу сильного 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

 

Что получается:    изменить 
Подписаться на комментарии к записи

Получать уведомления о всех ответах в этом обсуждении.

 
Отписаться от комментарев к записи

Получать уведомления только о тех ответах в этом обсуждении, которые адресованы лично вам.

 
К сожалению, комментарий не удалось отправить. Попробуйте ещё раз.я в курсе