'Define an attribute
name (str): then name of the attribute--should be alphanumeric (valid for an XML attribute)
default (any type): If not specified, this attribute is required.  If specified, use this as the default value
if the attribute is not specified.  Note that this value will not be transformed or validated.
transform (function str -> any type): If not None, will be called to transform the parsed value into an internal
representation.
validate (function str-or-return-type-of-tranform -> unit or exception): If not None, called to validate the
(possibly transformed) value of the attribute.  Should raise ValueError with a helpful message if
the value is invalid.
render (bool): if False, don\'t include this attribute in the template context.'

def __init__(self, name, default=_sentinel, transform=None, validate=None, render=True):

    self.name = name
    self.default = default
    self.validate = validate
    self.transform = transform
    self.render = render
