I think this API is attempting to have things both ways and as a result, its confusing. The attributes need to work in a single manner. According to this email, the 'name' attribute operates in different ways depending on the presence of the 'event' attribute. This allows confusing situations like this to occur:
<handler name="oninit" event="null"> ... </handler> <handler name="oninit"> ... </handler> According to the API, this confusing mess would be legal as the first handler only has the name "oninit", while the second handler only handles "oninit" events and doesn't have a name, so there's no name conflict.
