Delit, в начальном коде был цикл while-do, а не описанный вами цикл do-until/do-while. Именно while-do-цикл требует два перехода (условный и безусловный), и именно он выглядит гораздо внятнее в цикловой записи, а не в goto-шной.
И да - логикой программы циклы управлять не должны - логика задается алгоритмом, и его реализация на языке - может быть различной. Но именно использование примитивов циклов упрощает чтение кода программы т.к. исключает явные переходы, которые требуются в алгоритме.
unimix, так я же не говорил никогда/нигде и т.п. крайности. Я сказал, что задачи прикладного плана редко требуют рекурсивных решений. Пример с XML - это один из тех случаев когда да - оно нужно.