'Returns an xml string representing this module.'

def definition_to_xml(self, resource_fs):

    xml = etree.Element('video')
    youtube_string = create_youtube_string(self)
    if (youtube_string and (youtube_string != '1.00:3_yD_cEKoCk')):
        xml.set('youtube', unicode(youtube_string))
    xml.set('url_name', self.url_name)
    attrs = {'display_name': self.display_name, 'show_captions': json.dumps(self.show_captions), 'start_time': self.start_time, 'end_time': self.end_time, 'sub': self.sub, 'download_track': json.dumps(self.download_track), 'download_video': json.dumps(self.download_video)}
    for (key, value) in attrs.items():
        if value:
            if ((key in self.fields) and self.fields[key].is_set_on(self)):
                try:
                    xml.set(key, unicode(value))
                except UnicodeDecodeError:
                    exception_message = format_xml_exception_message(self.location, key, value)
                    log.exception(exception_message)
                    log.info("Setting    xml    value    using    'utf-8'    scheme.")
                    xml.set(key, unicode(value, 'utf-8'))
                except ValueError:
                    exception_message = format_xml_exception_message(self.location, key, value)
                    log.exception(exception_message)
                    raise
    for source in self.html5_sources:
        ele = etree.Element('source')
        ele.set('src', source)
        xml.append(ele)
    if self.track:
        ele = etree.Element('track')
        ele.set('src', self.track)
        xml.append(ele)
    if self.handout:
        ele = etree.Element('handout')
        ele.set('src', self.handout)
        xml.append(ele)
    if (self.transcripts is not None):
        for transcript_language in sorted(self.transcripts.keys()):
            ele = etree.Element('transcript')
            ele.set('language', transcript_language)
            ele.set('src', self.transcripts[transcript_language])
            xml.append(ele)
    if (self.edx_video_id and edxval_api):
        try:
            xml.append(edxval_api.export_to_xml(self.edx_video_id, unicode(self.runtime.course_id.for_branch(None))))
        except edxval_api.ValVideoNotFoundError:
            pass
    self.add_license_to_xml(xml)
    return xml
