| Новости | 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}
}
}