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

Поиск:

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


Новичок



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

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



есть XML

Код

<GROUP>
    <Node number="1">
     <User Id="1" Name="User1" Points="10" />
     <User Id="2" Name="User2" Points="20" />
     <User Id="3" Name="User3" Points="10" />
    </Node>
    <Node number="2">
     <User Id="1" Name="User1" Points="30" />
     <User Id="2" Name="User2" Points="50" />
     <User Id="3" Name="User3" Points="10" />
    </Node>
    <Node number="3">
     <User Id="1" Name="User1" Points="20" />
     <User Id="2" Name="User2" Points="20" />
     <User Id="3" Name="User3" Points="10" />
    </Node>
</GROUP>



необходимо с помощью XSL получить такую таблицу

UserName     Node1    Node2    Node3   Total
-----------------------------------------------------------
User2               20          50          20        90
User1               10          30          20        60
User3               10          10          10        30



т.е. вывести данные каждого Node для пользователя отсортированные по сумме значений во всех Node


заранее спасибо
PM MAIL   Вверх
Nicola_S
Дата 14.8.2008, 11:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



спасибо всем, задачу решил...
PM MAIL   Вверх
Arsenius
Дата 19.8.2008, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Хоть задача и решена, позвольте выложить как вариант решения:

Код

<body>                           
    <table border="1">
        <tbody>
            <tr>
                <td>User</td>
                <xsl:for-each select="//Node">
                    <td>Node <xsl:value-of select="@number"/></td>
                </xsl:for-each>
                <td>Total</td>    
            </tr>    
            <xsl:for-each select="//User[not(@Id = preceding::User/@Id)]">
                <xsl:sort order="descending" data-type="number" select="@Points"/>
                <tr>
                    <td>
                        <xsl:value-of select="@Name"/> 
                    </td>
                    <xsl:for-each select="//User[@Id = current()/@Id]">
                    <td>
                        <xsl:value-of select="@Points"/>
                    </td>
                </xsl:for-each>
                <td>
                    <b><xsl:value-of select="sum(following::User[@Id = current()/@Id]/@Points ) + sum(preceding::User[@Id = current()/@Id]/@Points ) + sum(self::User[@Id = current()/@Id]/@Points )"/></b>
                </td>
            </tr>
            </xsl:for-each>
        </tbody>
    </table>
</body>


И еще момент, а что если добавить в Node еще одного пользователя? 

Например: 

Код

<User Id="4" Name="User4" Points="5" />


т.е. вот так

Код

<GROUP>
    <Node number="1">
        <User Id="1" Name="User1" Points="10" />
        <User Id="2" Name="User2" Points="20" />
        <User Id="3" Name="User3" Points="10" />
        <User Id="4" Name="User4" Points="5" />
    </Node>
    <Node number="2">
        <User Id="1" Name="User1" Points="30" />
        <User Id="2" Name="User2" Points="50" />
        <User Id="3" Name="User3" Points="10" />
    </Node>
    <Node number="3">
        <User Id="1" Name="User1" Points="20" />
        <User Id="2" Name="User2" Points="20" />
        <User Id="3" Name="User3" Points="10" />
    </Node>    
</GROUP>


И в результате получить такое:

User       Node 1   Node 2   Node 3   Total 
User2     20          50           20          90  
User1     10          30           20          60  
User3     10          10           10          30  
User4     5             -             -             5

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


Новичок



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

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



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

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

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

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

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


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

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


 




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


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

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