powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / значение переменной
6 сообщений из 6, страница 1 из 1
значение переменной
    #34354465
andrei77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Почему значение переменной не сохраняется?


<xsl:template name="pos">
<xsl:param name="pos" />

<xsl:for-each select="object ">

<xsl:variable name="stroka2">2</xsl:variable>
<xsl:if test="(position() +$pos) mod $stroka2 = 0">

<xsl:if test="@perenos!=0">
<xsl:choose>

<xsl:when test="@perenos=1">
<perenos_position>
<xsl:value-of select="$stroka2 -@perenos"/>
</perenos_position>
<xsl:call-template name="pos">
<xsl:with-param select="$pos +1" name="pos" />
</xsl:call-template>
</xsl:when>

<xsl:when test="@perenos=2">
<perenos_position>
<xsl:value-of select="$stroka2 -@perenos"/>
</perenos_position>
<xsl:call-template name="pos">
<xsl:with-param select="$pos +2" name="pos" />
</xsl:call-template>
</xsl:when>

<xsl:when test="@perenos=3">
<perenos_position>
<xsl:value-of select="$stroka2 -@perenos"/>
</perenos_position>
<xsl:call-template name="pos">
<xsl:with-param select="$pos +3" name="pos" />
</xsl:call-template>
</xsl:when>

</xsl:choose>
</xsl:if>
</xsl:if>
</xsl:if>
</xsl:for-each>
</xsl:template>
...
Рейтинг: 0 / 0
значение переменной
    #34354730
andrei77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кому не охота разбираться я тут приуменьшил эту операцию:

xml:
<?xml version="1.0" encoding="UTF-16"?>
<root >
<object name="Уровня 2"></object>
<object name="Привет" ></object>
<object name="Документация" ></object>
<object name="Сборка" ></object>
</root>

xslt:

<?xml version="1.0" encoding="windows-1251" ?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
<xsl:copy>
<xsl:apply-templates select="node()"/>
</xsl:copy>
</xsl:template>

<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>

<xsl:template match="/root">
<root>
<xsl:call-template name="pos">
<xsl:with-param name="pos">0</xsl:with-param>
</xsl:call-template>
</root>
</xsl:template>

<xsl:template name="pos">
<xsl:param name="pos"></xsl:param>
<xsl:for-each select="object">
<PRINT>
<xsl:value-of select="@name"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="$pos"/>
<xsl:text>
</xsl:text>
</PRINT>
<xsl:call-template name="pos">
<xsl:with-param name="pos" select="$pos +1"></xsl:with-param>
</xsl:call-template>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
значение переменной
    #34354776
andrei77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
может XSL:FOR-EACH сбивает параметры моей рекурсии?
...
Рейтинг: 0 / 0
значение переменной
    #34355480
andrei77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
понял что я вызываю шаблон раньше чем даю xsl-for each завершится...
но как ещё я могу передать переменную в xsl: for-each ...?
судя по всему никак.

как тогда можно обегать элементы? в этом случае?
...
Рейтинг: 0 / 0
значение переменной
    #34355656
TiG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
XSLT декларативный язык, переприсваивать значения переменны нельзя - рекурсию юзать, предвычисления и т.п.
А если честно я так и не понял, что вы хотите получить - из упрощенного примера цель не видна, а с первым разбираться не охота ;-) Может словами напишите что хотели то ?
...
Рейтинг: 0 / 0
значение переменной
    #34357388
maXmo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
<root>
<xsl:for-each select="object">
<PRINT>
<xsl:value-of select="@name"/>
<xsl:text>,</xsl:text>
<xsl:value-of select="position()"/>
<xsl:text>
</xsl:text>
</PRINT>
</xsl:for-each>
</root>
так получше будет
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / значение переменной
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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