Parses <DerivedVariable>

        @param node: Node containing the <DerivedVariable> element
        @type node: xml.etree.Element

        @raise ParseError: Raised when no name of specified for the derived variable.

def parse_derived_variable(self, node):
        """
        Parses <DerivedVariable>

        @param node: Node containing the <DerivedVariable> element
        @type node: xml.etree.Element

        @raise ParseError: Raised when no name of specified for the derived variable.
        """

        if 'name' in node.lattrib:
            name = node.lattrib['name']
        elif 'exposure' in node.lattrib:
            name = node.lattrib['exposure']
        else:
            self.raise_error('<DerivedVariable> must specify a name')

        params = dict()
        for attr_name in ['dimension', 'exposure', 'select', 'value', 'reduce', 'required']:
            if attr_name in node.lattrib:
                params[attr_name] = node.lattrib[attr_name]

        self.current_regime.add_derived_variable(DerivedVariable(name, **params))