Модераторы: diadiavova
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Пользовательские функции в xsl, для дополнительной обработки. Как? 
V
    Опции темы
HAL707
Дата 15.12.2008, 16:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 6.9.2007

Репутация: нет
Всего: 4



Привет всем. Возникла проблема следующего плана.
Имеется такой xml
Код

<Events>
    <DayEvent>
        <Start>2008-12-15T09:00:00</Start>
        <End>2008-12-15T10:00:00</End>
    </DayEvent>
    <DayEvent>
            <Start>2008-12-15T16:30:00</Start>
         <End>2008-12-15T17:30:00</End>
    </DayEvent>
    <DayEvent>

Имеестя xsl с такой строчкой
Код

<xsl:value-of select="Start"/> - <xsl:value-of select="End"/>

Соответственно при выводе в хтмл выводится такая строка
2008-12-15T11:45:00 - 2008-12-15T12:30:00

То есть вопрос в том, можно ли как-то написать СВОЮ функцию, которая будут вызываться в процессе вывода(!) и которая строку 2008-12-15T11:45:00 - 2008-12-15T12:30:00 заменять на 11:45-12:30?
И с помощью чего можно написать такую функцию? 
PM MAIL   Вверх
jsa
Дата 16.12.2008, 07:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 704
Регистрация: 19.1.2006
Где: Новосибирск

Репутация: 3
Всего: 20



Цитата(HAL707 @  15.12.2008,  21:19 Найти цитируемый пост)
То есть вопрос в том, можно ли как-то написать СВОЮ функцию, которая будут вызываться в процессе вывода(!)

можно конечно
Цитата(HAL707 @  15.12.2008,  21:19 Найти цитируемый пост)
И с помощью чего можно написать такую функцию? 

с помощью xslt конечно  smile - шутка

Код

<?xml version='1.0'?>

<xsl:stylesheet
    version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"    
    xmlns:date="http://exslt.org/dates-and-times"
    xmlns:func="http://exslt.org/functions"
    extension-element-prefixes="date func"
>
....
<func:function name="xp:date-time">
    <xsl:param name="date" select="date:date-time()"/>
    <xsl:param name="format" select="'%e.%m.%Y %H:%M'"/>

    <func:result>
        <xsl:choose>
            <xsl:when test="function-available('date:format-date')">
                <xsl:value-of select="date:format-date($date, $format)"/>
            </xsl:when>
            <xsl:otherwise>
                <!-- Задание переменных для вывода -->
                <xsl:variable name="y" select="substring($date, 1, 4)"/>
                <xsl:variable name="m" select="substring($date, 6, 2)"/>
                <xsl:variable name="d" select="substring($date, 9, 2)"/>
                <xsl:variable name="h" select="substring($date, 12, 2)"/>
                <xsl:variable name="i" select="substring($date, 15, 2)"/>

                <xsl:value-of select="concat($d, '.', $m, '.', $y, '  ', $h, ':', $i)"/>
            </xsl:otherwise>
        </xsl:choose>
    </func:result>
</func:function>
...
<xsl:value-of select="xp:date-time()"/>

HAL707,  это лишь пример, нужна доработка в твоем случае, я думаю сдесь переделать будет не сложно


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
HAL707
Дата 16.12.2008, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 6.9.2007

Репутация: нет
Всего: 4



jsa, спасибо.
Но это я чисто для примера привел. А что если нужно будет сделать достаточно сложную обработку, и средств xslt не хватает?
Нельзя ли сюда прикрутить JavaScript к примеру?

Это сообщение отредактировал(а) HAL707 - 16.12.2008, 11:33
PM MAIL   Вверх
jsa
Дата 16.12.2008, 12:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 704
Регистрация: 19.1.2006
Где: Новосибирск

Репутация: 3
Всего: 20



Цитата(HAL707 @  16.12.2008,  16:31 Найти цитируемый пост)
А что если нужно будет сделать достаточно сложную обработку

на сколько сложную? я же не знаю твоей задачи, поэтому ничего не могу сказать, я считаю что можно сделать все, может быть просто посмотреть на задачу под другим углом


--------------------
Все мы, на перине с песней, строим небо на земле © Ю. Шевчук
PM MAIL ICQ   Вверх
HAL707
Дата 16.12.2008, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 109
Регистрация: 6.9.2007

Репутация: нет
Всего: 4



Так получается, что js при обработке использовать нельзя?

А, хотя можно!

Это сообщение отредактировал(а) HAL707 - 16.12.2008, 18:33
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

Также рекомендуем Вам зайти в раздел FAQ ,раздел дополняется и, возможно, там вы увидите готовое решение.

Для ответов на часто задаваемые вопросы существует FAQ раздела. Новости можно публиковать в разделе новостей. Для статей так же есть специальный раздел

Желаем удачи в Вашем деле!


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, diadiavova.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | XML, XSL | Следующая тема »


 




[ Время генерации скрипта: 0.0460 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.