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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> выбор данных по атрибуту и запись в таблыцу 
V
    Опции темы
RastaDja
Дата 13.9.2011, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Доброго времени суток!
Есть такой XML
Код

<results>
    <collection>
      <coll name="Коллекция 1" caption="Результат 1">
        <coll_result>
          <result_param name="Massa" value="4.80" caption="Масса" />
          <result_param name="Len" value="156.007982" caption="Длина" />
        </coll_result>
        <coll_result>
          <result_param name="Massa" value="0.003" caption="Масса" />
          <result_param name="Len" value="20.008012" caption="Длина"  />
        </colls_result>
      </coll>
    </collection>
  </results>


как я могу построить такую таблицу?

    |    Масса            |    Длина             |
    |    4.80               |     156.007982   |
    |    0.003             |     20.008012     |

заголовки в таблице "Масса" и "Длина", я задаю вручную, а вот как мне из  <coll_result>  достать за один раз данные из <result_param> по атрибуту name не понимаю. Помогите разобратся.

Надеюсь понятно описал проблему?
Спасибо.

ЗЫ: С XSLT ранее не работал, поэтому прошу помощи.


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
джун
Дата 13.9.2011, 16:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



PM MAIL   Вверх
RastaDja
Дата 13.9.2011, 16:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



сделал сам.
Предлагаю часть кода
Код

<xsl:for-each select="coll_result">
        <tr>
            <td>
                  <xsl:for-each select="result_param">
                    <xsl:if test="@name='Massa'">
                      <xsl:value-of select="@value"/>
                    </xsl:if>
                  </xsl:for-each>
            </td>
            <td>
                  <xsl:for-each select="result_param">
                    <xsl:if test="@name='Len'">
                      <xsl:value-of select="@value"/>
                    </xsl:if>
                  </xsl:for-each>
             </td>
        <tr>
      </xsl:for-each>

   может есть более изящное решение? Имею ввиду с меньшим количеством циклов, так как сейчас количество обходов равно (количеству coll_result )*(количество result_param)*(число проверок), например, в выше приведенном примере будет 8 проходов, а если данынных много, то и проходов будет много smile .

Добавлено через 3 минуты и 12 секунд
Цитата(джун @  13.9.2011,  17:29 Найти цитируемый пост)
http://www.w3schools.com/xsl/xsl_for_each.asp
http://www.w3schools.com/xsl/xsl_apply_templates.asp 

Это немного не то, но все-же спасибо.


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
diadiavova
Дата 13.9.2011, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



По атрибуту данные можно выбрать таким выражением
Код

result_param[@name = 'Massa']



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


Опытный
**


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

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



diadiavova, a как это в коде выглядит? Если я не ошибаюсь, то таким выражением мы достаним данные с узла, а как достать данные с атрибута value, при условии, что атрибут name=`myname`. Во это я не знаю, а нужно именно это. Есто ли другой способ, чем тот что япредложил?  если есть вокажите в коде.
С уважением RDja


--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
diadiavova
Дата 13.9.2011, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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


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

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



Цитата(RastaDja @  13.9.2011,  21:48 Найти цитируемый пост)
а как достать данные с атрибута value, при условии, что атрибут name=`myname`

Код

elementname[@name = 'myname']/@value



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


Опытный
**


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

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



diadiavova, спасибо за помощь(+).
Код

<xsl:for-each select="coll_result">
  <tr>
    <td>
      <xsl:value-of select="result_param[@name = 'Massa']/@value"/>
    </td>
    <td>
      <xsl:value-of select="result_param[@name = 'Len']/@value"/>
    </td>
  <tr>
</xsl:for-each



--------------------
The more closely you look at one thing, the less closely can you see something else.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

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

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

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


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

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


 




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


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

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