Parses <Property>

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

        @raise ParseError: Raised when the property does not have a name.
        @raise ParseError: Raised when the property does not have a
        dimension.

def parse_property(self, node):
        """
        Parses <Property>

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

        @raise ParseError: Raised when the property does not have a name.
        @raise ParseError: Raised when the property does not have a
        dimension.
        """

        if self.current_component_type == None:
            self.raise_error('Property can only be defined in ' +
                             'a component type')

        try:
            name = node.lattrib['name']
        except:
            self.raise_error('<Property> must specify a name')

        try:
            dimension = node.lattrib['dimension']
        except:
            self.raise_error("Property '{0}' has no dimension",
                             name)
                             
        default_value = node.lattrib.get('defaultvalue', None)
        
        property = Property(name, dimension, default_value=default_value)

        self.current_component_type.add_property(property)