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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> получить значение атрибута 
:(
    Опции темы
Шухарт
Дата 6.11.2011, 00:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Снова здравствуйте!
Задача: присвоить атрибут элементу если его значение (value) совпадает с атрибутом обрабатываемого узла xml. Не получается выковырять атрибут этого самого элемента. Исходный xml такой:
Код

<sites>
  <site id="1" doctype="1"/>
  <site id="2" doctype="2"/>
</sites>

Пока решил задачу так: 
Код

<xsl:for-each select="sites/site">
<input type="radio" name="doctype" id="html" value="1">
<xsl:if test="@doctype = 1"><xsl:attribute name="checked">true</xsl:attribute></xsl:if>
</input>
html</label>
<label for="xhtml"><input type="radio" name="doctype" id="xhtml" value="2">
<xsl:if test="@doctype = 2"><xsl:attribute name="checked">true</xsl:attribute></xsl:if>
</input>
</xsl:for-each>

Но хотелось бы автоматизировать, чтобы устанавливать атрибуты вроде selected, checked в циклах. Для этого надо вытаскивать внутри input'a значение его @value. Но не получается. Что-то вроде такого хотелось бы: 
Код

<input type="radio" name="doctype" id="html" value="1">
<xsl:if test="@doctype = self::@value"><xsl:attribute name="checked">true</xsl:attribute></xsl:if>
</input>
html</label>
<label for="xhtml"><input type="radio" name="doctype" id="xhtml" value="2">
<xsl:if test="@doctype = self::@value"><xsl:attribute name="checked">true</xsl:attribute></xsl:if>
</input>

Заранее благодарен. 
PM MAIL   Вверх
diadiavova
Дата 6.11.2011, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Шухарт, так, а variable чем не подходит? Или я что-то не так понял? smile 
Код

<xsl:variable name="doctype" select="1">
<xsl:variable name="checked">true</xsl:variable>
<xsl:if test="@doctype = $doctype">
    <xsl:attribute name="checked" value="{$checked}"/>
</xsl:if>

Ну как-то так.


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


Новичок



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

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



Так я имею в @doctype значение текущего элемента, без проблем. А надо узнать совпадает ли оно с value input. Вот как его выколупать? 
Упрощённо: 
Код

<input value="1">
<xsl:value-of select="(как тут вывести value?)"/>
</input>

PM MAIL   Вверх
diadiavova
Дата 6.11.2011, 09:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Шухарт @  6.11.2011,  01:32 Найти цитируемый пост)
 А надо узнать совпадает ли оно с value input. Вот как его выколупать? 

А в инпут оно откуда берется? Ведь это выходной элемент и ты сам его создаешь. Ну объяви variable до инпута и впиши значение в оба места. 
Код

<xsl:variable name="value" select="1"/>
<input value="{$value}">
<xsl:value-of select="{$value}"/>
</input>

Только так. А получить значение выходного элемента ты не сможешь.


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


Новичок



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

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



Цитата(diadiavova @ 6.11.2011,  09:25)
А получить значение выходного элемента ты не сможешь.

Ууу, понятно. Вот это жаль. 
value не из xml берётся, прямо прописано в xsl. значить придутся ещё одну переменную наплодить, думал более изящно можно, через xPath как-нибудь... 
Спасибо за участие, diadiavova. 
PM MAIL   Вверх
diadiavova
Дата 6.11.2011, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(Шухарт @  6.11.2011,  12:30 Найти цитируемый пост)
value не из xml берётся, прямо прописано в xsl. 

Ну в принципе нужные значения(если их много) можно в отдельный документ записать и вытаскивать при помощи функции document.


--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

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

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

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


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

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


 




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


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

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