'Creates an instance of this descriptor from the supplied xml_data.
This may be overridden by subclasses
xml_data: A string of xml that will be translated into data and children for
this module
system: A DescriptorSystem for interacting with external resources
id_generator is used to generate course-specific urls and identifiers'

@classmethod
def from_xml(cls, xml_data, system, id_generator):

    xml_object = etree.fromstring(xml_data)
    url_name = xml_object.get('url_name', xml_object.get('slug'))
    block_type = 'video'
    definition_id = id_generator.create_definition(block_type, url_name)
    usage_id = id_generator.create_usage(definition_id)
    if is_pointer_tag(xml_object):
        filepath = cls._format_filepath(xml_object.tag, name_to_pathname(url_name))
        xml_object = cls.load_file(filepath, system.resources_fs, usage_id)
        system.parse_asides(xml_object, definition_id, usage_id, id_generator)
    field_data = cls._parse_video_xml(xml_object, id_generator)
    kvs = InheritanceKeyValueStore(initial_values=field_data)
    field_data = KvsFieldData(kvs)
    video = system.construct_xblock_from_class(cls, ScopeIds(None, block_type, definition_id, usage_id), field_data)
    return video
