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

когда выполняет строку
<xsl:when test="root/object[$par3]">
и объекты уже закончились и значение уже FALSE
ПОЧЕМУТО ПЕРЕСКАКИВАЕТ НА
<xsl:call-template name="choose ">
<xsl:with-param name="par1" select="1"></xsl:with-param>
</xsl:call-template>

ОБЪЯСНИТЕ ктонибудь почему?


<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">


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


<xsl:template name=" choose ">
<xsl:param name="par1"/>

<xsl:choose>
<xsl:when test="$par1=0">
<xsl:text>
</xsl:text>
СТРАНИЦА 1
<xsl:text>
</xsl:text>

<xsl:call-template name="object ">
<xsl:with-param name="par4" select="1"></xsl:with-param>
<xsl:with-param name="par3" select="1"></xsl:with-param>
</xsl:call-template>


</xsl:when>
<xsl:when test="$par1=1">
<xsl:text>
</xsl:text>
ОСТАЛЬНЫЕ СТРАНИЦЫ
<xsl:text>
</xsl:text>

<xsl:call-template name="object ">
<xsl:with-param name="par4" select="2"></xsl:with-param>
<xsl:with-param name="par3" select="30"></xsl:with-param> <!-- до куда -->
</xsl:call-template>

</xsl:when>
</xsl:choose>
</xsl:template>





<xsl:template name="object">
<xsl:param name="par3"/>
<xsl:param name="par4"/>

<xsl:choose>
<xsl:when test="root/object[$par3]">
<xsl:choose>

<xsl:when test="$par4=1">
<xsl:if test="$par3 <= 29">
<xsl:text>
</xsl:text>
Объект, до 29 или 29

<xsl:call-template name="object">
<xsl:with-param name="par3" select="$par3 +1"></xsl:with-param>
<xsl:with-param name="par4" select="1"></xsl:with-param>
</xsl:call-template>
</xsl:if>

<xsl:call-template name="choose">
<xsl:with-param name="par1" select="1"></xsl:with-param>
</xsl:call-template>

</xsl:when>

<xsl:when test="$par4=2">
Объект, после 29
<xsl:call-template name="object">
<xsl:with-param name="par3" select="$par3 +1"></xsl:with-param>
<xsl:with-param name="par4" select="2"></xsl:with-param>
</xsl:call-template>

</xsl:when>

</xsl:choose>

</xsl:when>

</xsl:choose>

</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
зациклился
    #34366824
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А кусок исходного файла который парсишь привети можешь? а то не понятно
И еще нафига xmlns:fo="http://www.w3.org/1999/XSL/Format" - в коде чето не заметил его использование
...
Рейтинг: 0 / 0
зациклился
    #34366849
andrei77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<?xml version="1.0" encoding="UTF-16"?>
<root>
<object name=" " kolvo="0" perenos="0"></object>
<object name="Документация" kolvo="0" perenos="1"></object>
<object name="Сборка первого уровня 2" >Сборка первого </object>
<object perenos="0">уровня 2</object>
<object name="Сборка первого уровня 2" >Сборка первого </object>
<object perenos="0">уровня 2</object>
<object name="Сборка первого уровня 2" >Сборка первого </object>
<object perenos="0">уровня 2</object>
<object name="Сборка первого уровня 2">Сборка первого </object>
<object perenos="0">уровня 2</object>
<object name="Сборка первого уровня 2">Сборка первого </object>
</root>


Это я форматирующие объекты которые мне нужны нафик удалил, чтобы они просто не захламляли. а то и так ужас получился а так вообще с ними ни фика не поймешь
...
Рейтинг: 0 / 0
зациклился
    #34366856
andrei77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
<?xml version="1.0" encoding="UTF-16"?>
<root>
<object name=" " kolvo="0" perenos="0"></object>
<object name="Документация" kolvo="0" perenos="1"></object>
<object name="Сборка первого уровня 2" >Сборка первого </object>
<object perenos="0">уровня 2</object>
<object name="Сборка первого уровня 2" >Сборка первого </object>
<object perenos="0">уровня 2</object>
<object name="Сборка первого уровня 2" >Сборка первого </object>
<object perenos="0">уровня 2</object>
<object name="Сборка первого уровня 2">Сборка первого </object>
<object perenos="0">уровня 2</object>
<object name="Сборка первого уровня 2">Сборка первого </object>
<object name=" " kolvo="0" perenos="0"></object>
<object name="Документация" kolvo="0" perenos="1"></object>
<object name="Сборка первого уровня 2" >Сборка первого </object>
<object perenos="0">уровня 2</object>
<object name="Сборка первого уровня 2" >Сборка первого </object>
<object perenos="0">уровня 2</object>
<object name="Сборка первого уровня 2" >Сборка первого </object>
<object perenos="0">уровня 2</object>
<object name="Сборка первого уровня 2">Сборка первого </object>
<object perenos="0">уровня 2</object>
<object name="Сборка первого уровня 2">Сборка первого </object>
<object name=" " kolvo="0" perenos="0"></object>
<object name="Документация" kolvo="0" perenos="1"></object>
<object name="Сборка первого уровня 2" >Сборка первого </object>
<object perenos="0">уровня 2</object>
<object name="Сборка первого уровня 2" >Сборка первого </object>
<object perenos="0">уровня 2</object>
<object name="Сборка первого уровня 2" >Сборка первого </object>
<object perenos="0">уровня 2</object>
<object name="Сборка первого уровня 2">Сборка первого </object>
<object perenos="0">уровня 2</object>
<object name="Сборка первого уровня 2">Сборка первого </object>
</root>
...
Рейтинг: 0 / 0
зациклился
    #34366959
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и в чем проблема?
в твой код в этом учаске поставил

<xsl:when test="root/object[$par3]">
<xsl:choose>

<xsl:when test="$par4=1">
<xsl:if test="$par3 <= 29">
<xsl:text>
</xsl:text> Объект, до 29 или 29 <xsl:call-template name="object">
<xsl:with-param name="par3" select="$par3 +1"/>
<xsl:with-param name="par4" select="1"/>
</xsl:call-template>
<xsl:value-of select="$par3"/>
</xsl:if>
Вот результат трасировки
....
Объект, до 29 или 29 11
ОСТАЛЬНЫЕ СТРАНИЦЫ
10
ОСТАЛЬНЫЕ СТРАНИЦЫ
9
ОСТАЛЬНЫЕ СТРАНИЦЫ
8
ОСТАЛЬНЫЕ СТРАНИЦЫ
7
ОСТАЛЬНЫЕ СТРАНИЦЫ
6
ОСТАЛЬНЫЕ СТРАНИЦЫ
5
ОСТАЛЬНЫЕ СТРАНИЦЫ
4
ОСТАЛЬНЫЕ СТРАНИЦЫ
3
ОСТАЛЬНЫЕ СТРАНИЦЫ
2
ОСТАЛЬНЫЕ СТРАНИЦЫ
1
ОСТАЛЬНЫЕ СТРАНИЦЫ
</root>
Пока до 1 не дошел и и работал
...
Рейтинг: 0 / 0
зациклился
    #34366974
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Написал бы вывести ОСТАТОК СТРАНИЦЫ, и тут же бы прекратил программу, или чего надо то?
И еще чего у тебя в xml все значения атрибуттов одинаковые?
ps: На мою темку не заглянешь? ту которую седня выложил
...
Рейтинг: 0 / 0
зациклился
    #34367015
andrei77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если из кода убрать
<xsl:when test="root/object[$par3]">
то получится то как мне нужно, только + бесконечность..
а мне нужно как только элементы object заканчиваются выйти...
...
Рейтинг: 0 / 0
зациклился
    #34367027
andrei77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
почему когда
условие <xsl:when test="root/object[$par3]">
FALSE он идет куда-то,а не заканчивает выполнение как я задумал?
...
Рейтинг: 0 / 0
зациклился
    #34367119
andrei77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
объясните идиоту плиз
...
Рейтинг: 0 / 0
зациклился
    #34367178
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а ты случаем не заметил, что... :)
В xml оставь 4 записи и запусти
у тебя обработаеться 4 объекта до 29 и... еще выведется 4 объекта ОСТАТОК СТРАНИЦЫ (это при наличии того самого условия, без которого у тебя бесконечность)
т.о. у тебя сначала идет все при параметрах par3 и par4 =1 а затем все ЗАНОВО!! но при других значениях, при каких услоиях у тебя прекращение обработки предусмотренно?
...
Рейтинг: 0 / 0
зациклился
    #34368771
SuSa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну чего? разобрался? нашел ошибку, покаж результат интересно ведь :)
...
Рейтинг: 0 / 0
зациклился
    #34370410
andrei77
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, в моей логике было неправильно, что когда выполняется шаблон то он потом после выполнения отдает управление в начало продолжает дальше... так вот...
у меня там было условие >=29 - и это выполнялось в xsl:if ...я его заменил choose
автор<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">



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



<xsl:template name="choose">
<xsl:param name="par1"/>

<xsl:choose>
<xsl:when test="$par1=0">
<xsl:text>
</xsl:text>
СТРАНИЦА 1
<xsl:text>
</xsl:text>

<xsl:call-template name="object">
<xsl:with-param name="par4" select="1"></xsl:with-param>
<xsl:with-param name="par3" select="1"></xsl:with-param>
</xsl:call-template>


</xsl:when>
<xsl:when test="$par1=1">
<xsl:text>
</xsl:text>
ОСТАЛЬНЫЕ СТРАНИЦЫ
<xsl:text>
</xsl:text>

<xsl:call-template name="object2">
<xsl:with-param name="par4" select="2"></xsl:with-param>
<xsl:with-param name="par3" select="30"></xsl:with-param> <!-- до куда -->
</xsl:call-template>
</xsl:when>
</xsl:choose>
</xsl:template>






<xsl:template name="object">
<xsl:param name="par3"/>
<xsl:param name="par4"/>


<xsl:choose>



<xsl:when test="$par3 <= 2">
<xsl:text>
</xsl:text>
Объект, до 29 или 29

<xsl:call-template name="object">
<xsl:with-param name="par3" select="$par3 +1"></xsl:with-param>
<xsl:with-param name="par4" select="1"></xsl:with-param>
</xsl:call-template>
</xsl:when>

<xsl:otherwise>
<xsl:call-template name="choose">
<xsl:with-param name="par1" select="1"></xsl:with-param>
</xsl:call-template>
</xsl:otherwise>
</xsl:choose>
</xsl:template>


<xsl:template name="object2">
<xsl:param name="par3"/>
<xsl:param name="par4"/>

<xsl:if test="root/object[$par3]">
<xsl:value-of select="$par3"/><xsl:text>,</xsl:text><xsl:value-of select="root/object[$par3]"/>
<xsl:text>

</xsl:text>

<xsl:call-template name="object2">
<xsl:with-param name="par3" select="$par3 +1"></xsl:with-param>
<xsl:with-param name="par4" select="2"></xsl:with-param>
</xsl:call-template>
</xsl:if>


</xsl:template>
</xsl:stylesheet>
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / XML, XSL, XPath, XQuery [игнор отключен] [закрыт для гостей] / зациклился
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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