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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Петля в хслт, Как создать петлю. 
V
    Опции темы
t77
  Дата 19.9.2010, 15:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Доброе время суток.
Вопрос собственно в том, как можно создать петлю в хслт, задав число..?
Допустим мне нужно, чтобы петля выполнялась 5 раз, не зависимо от чего либо.

Код

<xsl:variable name="numOfPages">
<xsl:text>5</xsl:text>                                            
</xsl:variable>                        
                        
<xsl:for-each select="$numOfPages">
 <div style="border:1px solid black;">
  xxx
 </div>
</xsl:for-each>                        

Данный код выдает непонятную ошибку...
Что я делаю не так?

Как это можно сделать?
PM MAIL   Вверх
diadiavova
Дата 19.9.2010, 16:28 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Доктор Зло(диагност, настоящий, с лицензией и полномочиями)
****


Профиль
Группа: Модератор
Сообщений: 5821
Регистрация: 14.8.2008
Где: В Коньфпольте

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



Я уже вроде тебе объяснял, что хслт - функциональный язык и в нем нет никаких циклов(петель). Элемент for-each обрабатывает набор узлов и выполняет определенные действия для каждого элемента набора. То есть атрибуту select надо передавать объект, имеющий тип node-set, а не число, тем более почему-то заданное с помощью элемента text. smile 
Для решения твоей задачи понадобится рекурсивный шаблон, что-то типа
Код

    <xsl:template name="repeatdiv" >
        <xsl:param name="count"/>
        <div style="border:1px solid black;">
            xxx
        </div>
        <xsl:if test="$count &gt; 1">
            <xsl:call-template name="repeatdiv">
                <xsl:with-param name="count" select="$count -1"/>
            </xsl:call-template>
        </xsl:if>
    </xsl:template>


Вызвать его можно так
Код

            <xsl:call-template name="repeatdiv">
                <xsl:with-param name="count" select="5"/>
            </xsl:call-template>



--------------------
Хочешь получить мудрый совет - читай подписи участников форумов.
Злой доктор Щасзаболит smile
PM   Вверх
t77
  Дата 19.9.2010, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



diadiavova Спасибо. smile 
PM MAIL   Вверх
magelan
Дата 19.9.2010, 18:57 (ссылка)    | (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


потерял xPath
**


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

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



ты по что сиротинушку мучаешь?
Код

<xsl:variable name="numOfPages">
<xsl:text>5</xsl:text>                                            
</xsl:variable>  


Это наверное самый жосткий способ задать переменную. Смотри какие еще есть варианты:

- обычный
Код

<xsl:variable name="numOfPages" select="5" />

- блондинка прошла мимо, думал о другом
Код

<xsl:variable name="numOfPages" select="number('5')" />

- думать не хотел
Код

<xsl:variable name="numOfPages">5</xsl:variable>  

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

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

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

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

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


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

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


 




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


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

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