Вы знаете какие-либо популярные PHP-шаблоны для php, которые имеют концепцию текущего контекстного узла?

Этот вопрос связан с этим. Есть ли что-то вроде Dwoo-s {with} или {loop} в Smarty 3 или раньше?

В принципе, я хочу иметь что-то вроде текущего узла из шаблонов XSLT.

В XSLT, когда я пишу что-то вроде:

<xsl:for-each select="catalog/cd"> <tr> <td><xsl:value-of select="title"/></td> <td><xsl:value-of select="artist"/></td> </tr> </xsl:for-each> 

художник фактически ссылается на каталог / cd [1] / artist (и, конечно, [2], [3] … и так далее, если есть больше cd-s)

Текущий контекст, в котором имена полей понимаются внутри каждого блока.

Мне очень нравится эта функциональность. Вы знаете какой-либо популярный механизм шаблонов PHP (кроме Dwoo), который имеет эту функциональность?

ОБНОВИТЬ:

Тим Фонтан предложил:

 // smarty {foreach from=$cds item=cd} <tr> <td>{$cd->title}</td> <td>{$cd->artist}</td> </tr> {/foreach} 

но я бы предпочел что-то вроде:

 // dwoo {foreach from=$cds} <tr> <td>{$title}</td> <td>{$artist}</td> </tr> {/foreach} 

который не будет работать.

Подумайте о вложенном цикле (предположим, что cd имеет несколько исполнителей):

 // smarty {foreach from=$cds item=cd} <tr> <td>{$cd->title}</td> <td><ul> {foreach from=$cd->artist item=$ar} <li>{$ar}</li> {/foreach} </ul></td> </tr> {/foreach} 

когда я предпочел

 // dwoo {foreach from=$cds} <tr> <td>{$title}</td> <td><ul> {foreach from=$artist} <li>{$}</li> {/foreach} </ul></td> </tr> {/foreach} 

Также, если у меня также есть коллекция музыки на кассетах, я могу перебирать ее с помощью того же кода:

 // dwoo {foreach from=$mcs} <tr> <td>{$title}</td> <td><ul> {foreach from=$artist} <li>{$}</li> {/foreach} </ul></td> </tr> {/foreach} 

Я не знаю, могу ли я использовать одно и то же имя для переменной цикла снова и снова, как здесь:

 // smarty, buggy? {foreach from=$mcs item=o} <tr> <td>{$o->title}</td> <td><ul> {foreach from=$o->artist item=o} <li>{$o}</li> {/foreach} </ul></td> <td>{$o->title}</td> </tr> {/foreach} 

Но я полагаю, что внутренний $ o переписал бы внешние $ o