Page Template TAL tags: no HTML tag required
Here's something useful about the Template Attribute Language I didn't know: TAL statements DO NOT NEED to be inside an HTML tag. They can be inserted in Zope Page Templates as their own, separate tag. Look at this ZPT code: <tal:spam define="name string:Hipple-Dee-Dipple"> Why, hello there, <tal:fish-slap replace="name" />! Nice to see you. </tal:spam> No HTML tags in there! The spam tag has an end tag, the fish-slap tag needs none. Steve Alexander explains:
Because of the way TAL uses XML namespaces, you can call an element "tal:whateveryoulike". All of its attributes will be in the 'tal:' namespace by default. So, you could say:
<tal:foo tal:replace="name" />
Which is equivalent to
<tal:bar tal:replace="name" />
Which is equivalent to
<tal:baz replace="name" />
Shane Hathaway points out:
Attributes of a TAL tag default to the "tal:" namespace, so you don't have to write "tal:" more than once per tag. (In fact, if you use an xmlns attribute, you don't have to use a "tal:" prefix at all, but then you have to prefix everything else.)
An example: <tal:mytag define="msg string:Good day!" condition="msg" content="msg" /> Godefroid Chapelle points to the documentation of this TAL feature:
http://www.zope.org/Documentation/Books/ZopeBook/2_6Edition/AdvZPT.stx#3-45
Steve Alexander shows how TAL syntax is similar to that of DTML (and ASP):
DTML: Hello <b><dtml-var name></b>, how are you? ZPT: Hello <b><tal:tag replace="name"/></b>, how are you?
In ZPT, one of the constraints is to use valid XML. <dtml-var name> is not valid xml, because "name" should be in quotes, and it should have an attribute name. Actually, <dtml-var name> is a short-hand for <dtml-var name="name">. So, without cheesy short-cuts:
DTML: Hello <b><dtml-var name="name"></b>, how are you? ZPT: Hello <b><tal:tag replace="name"/></b>, how are you?
There's not so much difference now.
Now I will stop using otherwise-useless <span> tags just to host my TAL statements! Jon Whitener Detroit Michigan USA
participants (1)
-
Jon Whitener