As mentioned elsewhere, if one was to look at XSL (that *is* valide XML), there are loops and conditions there as well.
In this case syntax outlined in the last 2 lines is a possibility (namespace can be left to a separate discussion).
We could get things like:
<tcl:if test="condition">
...
</tcl:if>
<tcl:choose>
<tcl:when test="condition">
...
</tcl:when>
<tcl:otherwise>
...
</tcl:otherwise>
</tcl:choose>
<tcl:for-each select="list">
...
</tcl:for-each>
"condition" above could be something like "$admin_p" or "$foo='bar' and $ham='spam'", etc.