def ReSpecTh_to_ChemKED(filename_xml, file_author='', file_author_orcid='', *, validate=False):
    tree = etree.parse(filename_xml)
    root = tree.getroot()
    properties = get_file_metadata(root)
    properties['reference'] = get_reference(root)
    properties['reference']['detail'] = (properties['reference'].get('detail', '') +
                                         'Converted from ReSpecTh XML file ' +
                                         os.path.basename(filename_xml)
                                         )
    properties.update(get_experiment_kind(root))
    properties['common-properties'] = get_common_properties(root)
    properties['common-properties']['ignition-type'] = get_ignition_type(root)
    properties['datapoints'] = get_datapoints(root)
    has_pres_rise = ('pressure-rise' in properties['common-properties'] or
                     any([True for dp in properties['datapoints'] if 'pressure-rise' in dp])
                     )
    if has_pres_rise and properties['apparatus']['kind'] == 'rapid compression machine':
        raise KeywordError('Pressure rise cannot be defined for RCM.')
    has_vol_hist = any(
        [t.get('type') == 'volume' for dp in properties['datapoints']
         for t in dp.get('time-histories', [{}])]
    )
    if has_vol_hist and properties['apparatus']['kind'] == 'shock tube':
        raise KeywordError('Volume history cannot be defined for shock tube.')
    if file_author_orcid and not file_author:
        raise KeywordError('If file_author_orcid is specified, file_author must be as well')
    if file_author:
        temp_author = {'name': file_author}
        if file_author_orcid:
            temp_author['ORCID'] = file_author_orcid
        properties['file-authors'].append(temp_author)
    for idx in range(len(properties['datapoints'])):
        for prop in properties['common-properties']:
            properties['datapoints'][idx][prop] = properties['common-properties'][prop]
    if validate:
        chemked.ChemKED(dict_input=properties)
    return properties