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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Построение дерева 
:(
    Опции темы
endegvern
Дата 30.5.2007, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



По специфике занятий всегда был весьма далек от XML и XSL(T).
Но всегда что-то меняется. Прошу с пониманием отнестись уважаемым посетителям форума и "не пинать" за возможную простоту вопроса (типа: мог бы и своими мозгами пошевелить). Уже шевелю, но решение нужно быстрое, а пока я буду доучиваться, поезд уйдет.

Итак, дано:
Код

<tree>
<item id="1" parent_id="0">Node1</item>
<item id="2" parent_id="0">Node2</item>
<item id="3" parent_id="1">Node3</item>
и т. д. - вложенность неограничена
</tree>


Надо получить:
Код

<table>
  <tr>
    <td width="20"></td>
    <td>Node1</td>
  </tr>
  <tr>
    <td width="20"></td>
    <td>
       <table>
         <tr>
           <td width="20"></td>
           <td>Node3</td>
         </tr>
       </table>
    </td>
  </tr>
  <tr>
     <td width="20"></td>
     <td>Node2</td>
  </tr>
</table> 


Фактически простое построение дерева. Но как сделать это на XSLT?
Документацию читаю, поиском пользовался. К ответу и близко не подошел.
Отсутствие знаний в этой области сказывается. Возможно я уже видел ответ, но что это он, не понял :-).

С уважением.
PM MAIL   Вверх
Golda
Дата 30.5.2007, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 460
Регистрация: 26.3.2007
Где: Ариель, Израиль

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



Код

<?xml version="1.0" encoding="iso-8859-1" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="/">
        <table>
            <xsl:apply-templates select="tree/item[@parent_id=0]"/>
        </table>
    </xsl:template>

    <xsl:template match="item">
        <tr>
            <td width="20"></td>
            <td><xsl:value-of select="."/></td>
        </tr>
        <xsl:variable name="id_att" select="@id"/>
        <xsl:if test="count(/tree/item[@parent_id=$id_att]) &gt; 0">
        <tr>
            <td width="20"></td>
            <td>
                <table>
                    <xsl:for-each select="/tree/item[@parent_id=$id_att]">
                        <xsl:apply-templates select="." />
                    </xsl:for-each>
                </table>
            </td>
        </tr>
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>



--------------------
"For every problem, there exists a simple and elegant solution which is absolutely wrong." -- J. Wagoner, U.C.B. Mathematics
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "XML/XSLT"
diadiavova

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

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

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

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


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

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


 




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


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

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