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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Рекурсия и иерархия! 
:(
    Опции темы
rusBob
Дата 18.1.2007, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Всем доброго времени суток!
проблема в следующем, написал шаблончик:

<xsl:template match="kau">    
<xsl:for-each select="kau[begStockDeb]">
  <xsl:sort data-type="number" select="@val" order ="ascending"/>
  <tr>       
    <td> 
        <xsl:for-each select="ancestor-or-self::kau"> 
          <xsl:value-of  select = "concat(@val,'.')"/>
       </xsl:for-each>   
    </td>
   <td><xsl:value-of select="begStockDeb"/></td>
   <td><xsl:value-of select="begStockCr"/></td>
   <td><xsl:value-of select="entryDeb"/></td>
   <td><xsl:value-of select="entryCr"/></td>
  </tr>
  </xsl:for-each> 
  <xsl:apply-templates select="child::*[self::kau]">
          <xsl:sort data-type="number" select="@val" order ="ascending"/>
  </xsl:apply-templates>  
</xsl:template>

который рекурсивно проходит все дерево, но одна проблема, в таблицу выводятся данные не по мере обхода дерева (в глубь по иерархии) а по очередности уровней, вот так
2.1.0.669. 
2.1.0.966. 
2.1.0.1819.
2.1.0.2081.
2.1.0.669.7498
2.1.0.966.-9.
2.1.0.1819.6774
2.1.0.1819.6968
2.1.0.1819.6969
2.1.0.1819.6970
2.1.0.1819.7745
2.1.0.2081.8083 
 а небоходимо вот так
2.1.0.669. 
2.1.0.669.7498
2.1.0.966. 
2.1.0.966.-9.
2.1.0.1819.
2.1.0.1819.6774
2.1.0.1819.6968
2.1.0.1819.6969
2.1.0.1819.6970
2.1.0.1819.7745
2.1.0.2081.
2.1.0.2081.8083 
Может кто - то решал подобную проблему??
Спасибо!
PM MAIL   Вверх
JVM
Дата 19.1.2007, 10:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Чего-то вы нагородили ... Исходный xml можно показать?
PM MAIL   Вверх
rusBob
Дата 19.1.2007, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Да, конечно:
<rootXML>
<kau val="2">
<kau val="2">
<kau val="0">
<kau val="644">
<begStockDeb>0</begStockDeb>
<begStockCr>0</begStockCr>
<entryDeb>9185.00</entryDeb>
<entryCr>9185.00</entryCr>
<kau val="7476">
<begStockDeb>0</begStockDeb>
<begStockCr>0</begStockCr>
<entryDeb>9185.00</entryDeb>
<entryCr>9185.00</entryCr>
</kau>
</kau>
<kau val="400">
<begStockDeb>0</begStockDeb>
<begStockCr>0</begStockCr>
<entryDeb>4510.00</entryDeb>
<entryCr>4510.00</entryCr>
<kau val="7874">
<begStockDeb>0</begStockDeb>
<begStockCr>0</begStockCr>
<entryDeb>4510.00</entryDeb>
<entryCr>4510.00</entryCr>
</kau>
</kau>
<kau val="2092">
<begStockDeb>0</begStockDeb>
<begStockCr>0</begStockCr>
<entryDeb>34999.98</entryDeb>
<entryCr>34999.98</entryCr>
<kau val="8143">
<begStockDeb>0</begStockDeb>
<begStockCr>0</begStockCr>
<entryDeb>34999.98</entryDeb>
<entryCr>34999.98</entryCr>
</kau>
</kau>
<kau val="1684">
<begStockDeb>0</begStockDeb>
<begStockCr>0</begStockCr>
<entryDeb>2292.00</entryDeb>
<entryCr>2292.00</entryCr>
<kau val="6273">
<begStockDeb>0</begStockDeb>
<begStockCr>0</begStockCr>
<entryDeb>2292.00</entryDeb>
<entryCr>2292.00</entryCr>
</kau>
</kau>
..................................
Идея в следующем, имеется иерархическая структура аналитик счета, самый нижний уровень - сумма проводки, сервлетом я задаю уровень группировки, т.е. уровень иерархии на котором мне нужно суммировать общую сумму по данной аналитике начиная с нижнего уровня, на яве у меня все это реализовная иерархией в виде коллекций, т.е. Map - ом, ключом которого является номер аналитики а значение  - коллекция содержащая дочерние коллекции аналитик, самы нижний лист содержит коллекцию из конкрентного значения проводки включая дату и т.п., далее  сервлет выгружает эту коллекцию в хмл... вот собственно и все.

Добавлено @ 11:34 
Все вроде решил, всем, спасибо, хотя может у меня не оптимальный вариант...

<!-- Рекурсивный шаблон для обработки аналитик и вывода
     их в таблицу 
        -->   
<xsl:template match="kau">    
 <xsl:if test="begStockDeb">   
<tr>       
    <td> 
  
        <xsl:for-each select="ancestor-or-self::kau"> 
          <xsl:value-of  select = "concat(@val,'.')"/>
       </xsl:for-each>   
    </td>
   <td><xsl:value-of select="begStockDeb"/></td>
   <td><xsl:value-of select="begStockCr"/></td>
   <td><xsl:value-of select="entryDeb"/></td>
   <td><xsl:value-of select="entryCr"/></td>
 </tr>
   </xsl:if>
<xsl:apply-templates select="child::*[self::kau]">
          <xsl:sort data-type="number" select="@val" order ="ascending"/>
  </xsl:apply-templates>  
  </xsl:template>

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

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

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

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

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


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

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


 




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


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

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