Новости | FAQ | Авторы | Документация | В действии | Библиотека |
Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
Givi 21.04.2003 09:56
Идея следующая: метод-цикл, который пробегает xml-документ, по всем узлам, возвращая значение каждого узла переменной вызвавшего метода. Проблема в том, что когда метод-цикл вызывается рекурсивно, он соответственно и значения текущего узла присваивает переменной вызывающего метода, то есть своей собственной, только с "верхнего уровня" рекурсии. Таким образом рабочая переменная основного метода, инициализирующего цикл, всегда имеет значение самого первого узла дерева, что нас совершенно не устраивает. Как изменять эту переменную с любого уровня рекурсии?$self.xDoc[^load::[/structure.xml]] @test[][xNode] <ul> ^loop[xNode;0]{ <li>^xNode.getAttribute[name]</li> } </ul> --- @loop[name;node;code][nodeList;i;n] ^if(!$node){ $node[^xDoc.selectSingle[//root]] } $caller.$name[$node] ^if($node is 'xnode'){$code} ^if(^node.hasChildNodes[]){ $nodeList[^node.select[*]] $n($nodeList-1) ^for[i](0;$n){ $node[$nodeList.$i] ^loop[$name;$node]{$code} } }