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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> выражение в имени атрибута, xsl:value-of select="//@name()" 
:(
    Опции темы
Шухарт
Дата 6.4.2011, 10:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 8.5.2010
Где: Хармонт, Канада

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



Добрый всем день. 
Есть узел xml где хранятся в виде атрибутов переменные зависящие от локализации: 
Код

<locale prefix="ru" title="русский">
    <vars error_404="Ошибка 404" new_var="новая переменная" title="название" locale="локализация" code="код" value="значение" show="показать" prefix="префикс" save="сохранить" reset="очистить" let_select="выберите" or="или" start_datetime="начало публикации" end_datetime="дата окончания публикации"/>
</locale>

есть также цикл, который выводит список чекбоксов из узла вида
Код


<!-- xml -->
<preset id="5" set_name="1" start_datetime="1" datetime="0" end_datetime="0" comments="0" anons="0" text="0" images="0" files="0" title="0" description="0" keywords="0" tags="0" categories="0"/>


<!-- xsl -->
<xsl:for-each select="presets/preset">
<section id="{@id}" style="display: none;">
    <h3><xsl:value-of select="@set_name"/></h3>
    <ul>
<xsl:for-each select="@*">
    <li><label for="{name()}"><xsl:value-of select="____от тут надо прописать что-то типо: //locale/vars/@name()"></xsl:value-of></label>
    <xsl:if test="(. = 1)">
        <input name="{name()}" type="checkbox" id="name()" value="1" checked="checked"/>
    </xsl:if>
    <xsl:if test="(. != 1)">
        <input name="{name()}" type="checkbox" id="name()" value="1"/>
    </xsl:if>
    </li>
</xsl:for-each>
.....

собственно вопрос: можно как-то составить выражение для <xsl:value-of select="//locale/vars/@name()"/> что бы выбирался атрибут в зависимости от текущего для цикла name()?
может тут надо подшаблон с параметром заюзать? если да, то намекните как, я в них не особо силён.
PM MAIL   Вверх
diadiavova
Дата 6.4.2011, 10:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Для этого есть элемент Choose


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


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 8.5.2010
Где: Хармонт, Канада

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



Цитата(diadiavova @ 6.4.2011,  10:43)
Для этого есть элемент Choose

Про элемент choose я знаю, но как он может помочь в этой ситуации? 
if или choose проверит условие, а как внутри них получить доступ к атрибуту с именем name()? 
PM MAIL   Вверх
diadiavova
Дата 6.4.2011, 11:18 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Шухарт @  6.4.2011,  12:05 Найти цитируемый пост)
if или choose проверит условие, а как внутри них получить доступ к атрибуту с именем name()?  

Я видимо не вполне понял задачу. Тебе нужно получить значение атрибута некоего элемента, и имя этого атрибута соответствует имени текущего узла что ли? Тогда так
Код

<xsl:variable name="curname" select="name()"/>
<xsl:value-of select="//locale/vars/@*[name() = $curname]">

Вроде должно сработать.


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


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 8.5.2010
Где: Хармонт, Канада

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



[QUOTE=diadiavova,6.4.2011,  11:18]
Цитата(Шухарт @  6.4.2011,  12:05 Найти цитируемый пост)
 Тогда так
Код

<xsl:variable name="curname" select="name()"/>
<xsl:value-of select="//locale/vars/@*[name() = $curname]">

Вроде должно сработать.

О, супер! Спасибо, дядя Вова, то что нужно!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

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

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

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


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

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


 




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


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

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