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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> XSL аналог Hash-table, Вопрос по ветвлениям в XSL 
:(
    Опции темы
Ivan0x32
Дата 4.2.2010, 08:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Есть ли в XSLT(XPath точнее наверно) аналог хеша из Perl ?
Есть некое свойство color задаваемое строкой, скажем 'LightMagenta'. Его нужно преобразовать в традиционный 16-ричный код цвета. Раньше я это делал в самом скрипте генерации страницы, т.е. через хеш-таблицу.
PM MAIL   Вверх
diadiavova
Дата 4.2.2010, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Это можно реализовать самому как шаблон. Примерно следующим образом
Код

    <xsl:template name="colors">
        <xsl:param name="colorName"/>
        <xsl:choose >
            <xsl:when test="$colorName = 'white'">
                #ffffff
            </xsl:when>
            <xsl:when test="$colorName = 'black'">
                #000000
            </xsl:when>
            <xsl:when test="$colorName = 'red'">
                #ff0000
            </xsl:when>
            <xsl:when test="$colorName = 'green'">
                #00ff00
            </xsl:when>
            <xsl:when test="$colorName = 'blue'">
                #0000ff
            </xsl:when>
        </xsl:choose>
    </xsl:template>

Получится несколько многословно, но этот шаблон можно выделить в отдельный документ и импортировать везде где нужна такая хэш-таблица. Для вызова создаётся переменная, в которую можно передать значение
Код

            <xsl:variable name="clr">
                <xsl:call-template name="colors">
                    <xsl:with-param name="colorName">black</xsl:with-param>
                </xsl:call-template>
            </xsl:variable>

И уже её использовать далее.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
nmn
Дата 19.3.2010, 10:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



это же не хэш таблица, а больше похоже на ассоциативный массив

PM Skype   Вверх
diadiavova
Дата 19.3.2010, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Цитата(nmn @  19.3.2010,  10:13 Найти цитируемый пост)
это же не хэш таблица, а больше похоже на ассоциативный массив

И какая между ними разница? smile 


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
nmn
Дата 19.3.2010, 10:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



хэш таблица использует хэши для поиска элементов, а ассоциативный массив может реализовываться и на хэш таблицах или на чем нибудь другом
PM Skype   Вверх
diadiavova
Дата 19.3.2010, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

Репутация: 22
Всего: 142



Цитата(nmn @  19.3.2010,  10:33 Найти цитируемый пост)
а ассоциативный массив может реализовываться и на хэш таблицах или на чем нибудь другом 

Вопрос не в том, что на чём реализуется, а в том какая разница в поведении.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
magelan
Дата 5.4.2010, 18:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


потерял xPath
**


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

Репутация: 7
Всего: 16



для msxml парсера возможен такой вариант:

Код

<xsl:variable name="_colors">
            <color name= "white" value="#ffffff" />
            <color name= "black" value="#000000" />
            <!-- ... -->
</xsl:variable>
<xsl:variable name="colors" select="msxsl:node-set($_colors)" />


<xsl:value-of select="$colors[@name='white']/@value" />


У остальных парсеров существует либо схожий по названию аналог функции node-set либо они сразу превращают "три-фрагмент" в "нодесет", читайте доки.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

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

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

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


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

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


 




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


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

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