If DTML used TALES expressions, it would be just as clean as ZPT.
With the one caveat that ZPTs are valid XHTML, while DTML methods needn't balance tags and needn't mark empty tags as such (i.e. "<dtml-var x>", instead of "<dtml-var x />"). DTML tags can straddle HTML tags in completely non-XML ways: "<dtml-in items></td></dtml-in>"; limiting the tools that may work with DTML..
The "MTOWTDI" pseudo-entity &dtml-dict.key; alternate syntax might also count against cleanliness.
That said, I agree that using TALES would be a big win. We try to use it wherever we can! (Not only in ZPTs :)
Zope-Dev maillist - [EMAIL PROTECTED]
** No cross posts or HTML encoding! **
(Related lists - http://mail.zope.org/mailman/listinfo/zope-announce