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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Двойная группировка preceding-sibling 
:(
    Опции темы
engaged
Дата 4.8.2014, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Добрый день!
Прошу помощи с двойной группировкой.

Есть данные, которые я вывожу в таблицу с помощью preceding-sibling.

Данные такие 
Код

<Xml>
<Rows>
  <Row username="Иван" Category="Cat1"/>
  <Row username="Петр" Category="Cat2"/>
  <Row username="Семен" Category="Cat1"/>
  <Row username="Семен" Category="Cat2"/>
  <Row username="Семен" Category="Cat2"/>
  <Row username="Петр" Category="Cat1"/>
</Rows>
</Xml>

Вывести нужно таблицу, в которой будет группировка по полю username и по полю Category.
В итоге должна получится такая таблица

_____________
Cat1  |  Иван
Cat2  |  Петр
Cat1  |  Семен
Cat2  |  Семен
Cat1  |  Петр

Я делаю так (сначала группировка по Category, сразу за ней по username):
Код

<xsl:for-each select="Xml/Rows/Row[not(@Category = preceding-sibling::Row/@Category)]/@Category">
    <xsl:variable name="catname" select="." />
    <xsl:variable name="user" select="../@username"/>
    <tr>
        <td><xsl:value-of select="$catname"/></td>
        <td><xsl:value-of select="$user"/></td>        
    </tr>
</xsl:for-each>

<xsl:for-each select="Xml/Rows/Row[not(@username = preceding-sibling::Row/@username)]/@Category">
    <xsl:variable name="catname" select="." />
    <xsl:variable name="user" select="../@username"/>
    <tr>
        <td><xsl:value-of select="$catname"/></td>
        <td><xsl:value-of select="$user"/></td>        
    </tr>
</xsl:for-each>

Но таким образом в таблице получаются дубликаты.

_____________
Cat1  |  Иван
Cat2  |  Петр
Cat1  |  Семен
Cat2  |  Семен
Cat1  |  Петр
Cat1  |  Иван
Cat2  |  Петр
Cat1  |  Семен


Можно ли как-то избежать этого?
 
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

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

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

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


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

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


 




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


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

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