'Subclasses can declare lists of required and optional attributes.  This
function parses the input xml and pulls out those attributes.  This
isolates most simple input types from needing to deal with xml parsing at all.
Processes attributes, putting the results in the self.loaded_attributes dictionary.  Also creates a set
self.to_render, containing the names of attributes that should be included in the context by default.'

def process_requirements(self):

    loaded = {}
    to_render = set()
    for attribute in self.get_attributes():
        loaded[attribute.name] = attribute.parse_from_xml(self.xml)
        if attribute.render:
            to_render.add(attribute.name)
    self.loaded_attributes = loaded
    self.to_render = to_render
