When Zope Page Templates were designed, they needed a general expression syntax that could be used in attribute values to spell python expressions, string literals, and Zope object names. There are three major kinds of attribute in DTML tags, and each of them needs to be considered separately. The first three of these use foo by name, while the last two treat it as an expression. Second, there are switch attributes, the value of which are ignored, that simply turn some tag behavior on if they are present. DTML can easily be modified to provide variables similar to ZPT's, but all of its tags are designed to manipulate the namespace, not these variables.
Path expressions can refer to the contents of the namespace by traversing it.
Transition No conversion of DTML will be necessary, as all existing DTML will continue to work correctly. Risk Factors Backlash in the community against more verbose specification. This is mitigated by the improved power and expressiveness. It does not include deprecation of any DTML constructs. Deliverables New DTML engine that provides the specified behaviour.