=====================
Attribute Conventions
=====================

The attributes used in zcml usually follow the conventions described
here.


Terms used in this document
---------------------------

Dotted name
  XXX: explain resolution of ".Foo.Bar." and ".Foo.Bar+"
    

Specific Conventions
--------------------

The following attribute names are used when applicable to an element.

component
  A dotted name that resolves to an object.
  
class
  A dotted name that resolves to a class.
  
permission
  The id of a permission.
  
principal
  The id of a principal.
  
role
  The id of a role.
  
factory
  A dotted name that resolves to a callable that acts as a factory.
  The argument list passed to the callable will depend on the type of
  object whose creation is controlled by the particular directive.

  Some directives support the specification of a *composite factory*.
  This consists of several callables chained together to build the
  actual factory, and is specified by listing the names of two or more
  callables separated by one or more blanks.  The first callable
  listed must accept the normal calling sequence for the type of
  object being constructed.  The remaining callables must be Adapters.
  In other words, if the value of the factory attribute is ``"a b c"``,
  then the composite factory is built by doing
  ``c(b(a(<factory-argument-list>)))``.
