attributes: Replace element attributes


tal:attributes syntax:

      argument             ::= attribute_statement [';' attribute_statement]*
      attribute_statement  ::= attribute_name expression
      attribute_name       ::= [namespace ':'] Name
      namespace            ::= Name

*Note: If you want to include a semi-colon (;) in an expression, it must be escaped by doubling it (;;).*


The tal:attributes statement replaces the value of an attribute (or creates an attribute) with a dynamic value. You can qualify an attribute name with a namespace prefix, for example html:table, if you are generating an XML document with multiple namespaces. The value of each expression is converted to a string, if necessary.

If the expression associated with an attribute assignment evaluates to nothing, then that attribute is deleted from the statement element. If the expression evaluates to default, then that attribute is left unchanged. Each attribute assignment is independent, so attributes may be assigned in the same statement in which some attributes are deleted and others are left alone.

If you use tal:attributes on an element with an active tal:replace command, the tal:attributes statement is ignored.

If you use tal:attributes on an element with a tal:repeat statement, the replacement is made on each repetition of the element, and the replacement expression is evaluated fresh for each repetition.


Replacing a link:

      <a href="/sample/link.html"
         tal:attributes="href here/sub/absolute_url">

Replacing two attributes:

      <textarea rows="80" cols="20"
         tal:attributes="rows request/rows;cols request/cols">