Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как это можно сделать / 4 сообщений из 4, страница 1 из 1
12.05.2008, 14:04
    #35306460
xslt_beginner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как это можно сделать
Мне надо на xslt сделать эквивалент следующешго на C#:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
int i =  0 ;
int n =  5 ;
foreach (object o in objects)
{
   if (i>=n)
     break;
   i = i +  1 ;
}

t.e. в цикле <xsl:for-each> инкрементировать переменную и при привышении ею значения параметра (другой переменной, константы) выходить из него.

Может кто-нибудь помочь?
...
Рейтинг: 0 / 0
12.05.2008, 15:11
    #35306698
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как это можно сделать
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
<xsl:template name="loop">
  <xsl:param name="i" select="0"/>
  <xsl:if test="$i & lt;= 5">
    // Делаем полезную работу
    <xsl:call-template name="loop">
      <xsl:with-param name="i" select="$i + 1"/>
    </xsl:call-template>
  </xsl:if>
</xsl:template>
Или так
Код: plaintext
1.
2.
3.
4.
<xsl:for-each select="...">
  <xsl:if test="position() & lt;= 5">
    // Делаем полезную работу
  </xsl:if>
</xsl:for-each>
(& lt; писать без пробела)

Но учти, что второй вариант будет выполняться столько раз, скольцо у тебя узлов. Просто если их больше пяти, то для остальных просто не будет вызываться основное тело. Т.е. типа
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
int i =  0 ;
int n =  5 ;
foreach (object o in objects)
{
   if (i < n) {
     ..................
   }
   i = i +  1 ;
}

С уважением, Vasilisk
...
Рейтинг: 0 / 0
12.05.2008, 16:51
    #35307065
ibnTeo
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как это можно сделать
Аналога break нет, надо делать по другому, например так:

Код: plaintext
1.
<xsl:variable name="n" select="5"/>
<xsl:apply-templates select="objects[position() <= $n]"/>
...
Рейтинг: 0 / 0
12.05.2008, 18:39
    #35307382
xslt_beginner
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как это можно сделать
Большое всем спасибо!
...
Рейтинг: 0 / 0
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / Как это можно сделать / 4 сообщений из 4, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]