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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> сортировка сгруппированных данных 
:(
    Опции темы
Misha_
Дата 30.11.2006, 18:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



есть документ
<?xml version="1.0" encoding="iso-8859-1" ?>
<data>
   <item id="i1" catalog="s1" subcatalog="u1">561</item>
   <item id="i10" catalog="s3" subcatalog="u4">15</item>
   <item id="i22" catalog="s2" subcatalog="u2">1234</item> и тд.
        <catalog id="s1">catalog 1</catalog>
   <catalog id="s2">catalog 2</catalog>
   <catalog id="s3">catalog 3</catalog>

   <subcatalog id="u1">Subcatalog 1</subcatalog>
   <subcatalogid="u2">Subcatalog 2</subcatalog> и тд
   </data>

, который был с помощью 2-х уровневой группировки (с использованием ключей методом Мюнха) был приведен к виду
catalog 1

Subcatalog 1

ID Value

id1 value1
...
idN valueN

Subcatalog 2

ID Value

id1 value1
...
idN valueN
...

catalog 2

Subcatalog 1 итд...
необходимо отсортровать данные чтобы было каталог 1 и в нем подкталоги ПО-ПОРЯДКУ потом каталог 2 и в нем подкаталоги ПО_ПОРЯДКУ и тд...
мой xsl:

...
 <xsl:variable name="Sort1" select="@catalog"/>
  <xsl:variable name="Sort2" select="@subcatalog"/>


    <xsl:key name="Sector" match="item" use="@catalog"/>
    <xsl:key name="Subsector" match="item" use="concat(@catalog, ' ',@subcatalog)"/>
     

  <xsl:template match="data" >

    <xsl:variable name="Sort11" select="key('Sector',substring-after($Sort1,'s'))"/>
    <xsl:variable name="Sort22" select="key('Subsector',concat(substring-after($Sort1,'s'),' ',substring-after($Sort2,'u')))"/>
    
<xsl:for-each select="item[count(. | key('Sector', @catalog)[1]) = 1]">
      
<xsl:sort select="*[name()=$Sort11]" order="ascending" data-type="number"/>
     
<div>
                  <xsl:value-of select="//sector[@id=current()/@catalog]"/>
                  </div>
        <xsl:variable name="Items" select="key('Sector', @catalog)" />

      <xsl:for-each select="$Items[generate-id() =generate-id(key('Subsector',concat(@catalog,' ',@subcatalog))[1])]">

        <xsl:sort select="*[name()=$Sort22]" order="ascending" data-type="number"/>
       
<xsl:value-of select="//subcatalog[@id=current()/@subcatalog]" />
                       <xsl:for-each select="key('Subcatalog',concat(@catalog,' ',@subcatalog))">
              <div>
                <xsl:value-of select="@id"/>
                <xsl:text> </xsl:text>
                <xsl:value-of select="."/>
               
</div>
            </xsl:for-each>
          </xsl:for-each>
        </xsl:for-each>
      </xsl:template> 
</xsl:stylesheet>
подозреваю, что идея сортировки и ее месторасположение верное, ошибка- в синтаксисе... Может кто знает или есть мысли? Заранее огромное спасибо smile


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

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

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

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

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


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

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


 




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


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

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