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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нужен пример рекурсии 
:(
    Опции темы
BBALL
Дата 10.12.2007, 06:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Здраствуте! Покажите простой пример рекурсии на данном примере!
Задача состоит в том что в теге <Свойство> может быть   <Ссылка>, а в ссылке может быть несколько свойств со ссылками и т.д. Надо вытаскивать  <aaa> и <bbb> независимо от уровней вложенности...помогите разобратся с рекурсией шаблона!
Код

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type='text/xsl' href='1.xsl'?>
<Объекты>
  <Свойство>
        <aaa></aaa>
        <bbb></bbb>
 </Свойство>
<Ссылка>
   <Свойство>
         <aaa></aaa>
         <bbb></bbb>
   </Свойство>

   
    <Свойство>
            <aaa></aaa>
            <bbb></bbb>    

    <Ссылка>
        <Свойство>
            <aaa></aaa>
            <bbb></bbb>
        </Свойство>

    </Ссылка>

    </Свойство>
</Ссылка>

</Объекты>


Это сообщение отредактировал(а) BBALL - 10.12.2007, 08:25
PM MAIL   Вверх
JVM
Дата 10.12.2007, 09:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Надо использовать <xsl:apply-templates select="Свойство | Ссылка" /> в шаблонах для Свойство и Ссылка.

Но если Свойство не содержит Свойство, то в шаблонах для Свойства можно писать <xsl:apply-templates select="Ссылка" />

Это сообщение отредактировал(а) JVM - 10.12.2007, 09:34
PM MAIL   Вверх
BBALL
Дата 10.12.2007, 10:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Свойство не содержит Свойство

Так что ли? smile 
Код

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions">
<xsl:output method="xml" encoding="UTF-8" />
<xsl:template match="Свойство">

<xsl:apply-templates select="Ссылка" />
<xsl:apply-templates select=".//aaa"/>

</xsl:template>


</xsl:stylesheet>




PM MAIL   Вверх
BBALL
Дата 10.12.2007, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Чет я совсем запутался smile 
 smile 
PM MAIL   Вверх
JVM
Дата 11.12.2007, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Писать тебе пример лень.
Выкладывай свое произведение искусств smile , а мы подправим твой код. Только убери все лишнее.
PM MAIL   Вверх
Мурлыкатам_
Дата 5.1.2008, 13:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 265
Регистрация: 5.2.2007
Где: город-герой Минск

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



http://xmlhack.ru/books/xslt/ch_11_02.html
Можно почерпнуть хитростей всяких.

BBALL, если бы разметка была на английском, я бы посмотрел, а так лень возиться.
В твоем случае я думаю тебе надо грамотно сделать выборку: свойство//aaa
У ааа, один и тот же родитель. Я думаю можно сделать temlate match = "родитель" и должно все работать... хотя хз  smile 


--------------------
Хочешь что-то сделать - сделай это сам или попроси помощи на винграде smile
user posted image
PM MAIL ICQ   Вверх
takomac
Дата 14.2.2008, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Код

 <xsl:template name="pager">
 <xsl:param name="active_page" />
 <xsl:param name="current_page" />
 <xsl:param name="total_pages" />
        <xsl:if test="$current_page &lt;= $total_pages">
    <xsl:call-template name="pager">
        <xsl:with-param name="active_page"><xsl:value-of select="$active_page" /></xsl:with-param>
        <xsl:with-param name="category"><xsl:value-of select="$category" /></xsl:with-param>
        <xsl:with-param name="current_page"><xsl:value-of select="$current_page+1" /></xsl:with-param>
        <xsl:with-param name="total_pages"><xsl:value-of select="$total_pages" /></xsl:with-param>
    </xsl:call-template>
        </xsl:if>
 </xsl:template>

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

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

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

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

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


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

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


 




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


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

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