<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
    <xs:element name="emd" type="entry_type"/>
    <xs:complexType name="entry_type">
        <xs:sequence>
            <xs:element name="admin" type="admin_type"/>
            <xs:element name="crossreferences" type="crossreferences_type"/>
            <xs:element name="sample" type="sample_type"/>
            <xs:element name="structure_determination_list">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="structure_determination"
                            type="structure_determination_type" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="map" type="map_type"/>
            <xs:element name="interpretation" type="interpretation_type" minOccurs="0"/>
            <xs:element name="validation" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element ref="validation_method" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="emdb_id" type="emdb_id_type" use="required"/>
        <xs:attribute name="version" type="xs:token" default="3.0.11.3"/>
    </xs:complexType>
    <xs:complexType name="admin_type">
        <xs:sequence>
            <xs:element name="status_history_list" type="version_list_type" minOccurs="0"/>
            <xs:element name="current_status" type="version_type"/>
            <xs:element minOccurs="0" name="revision_history">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="revision" type="revision_history_type"
                            maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="sites">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="deposition">
                            <xs:simpleType>
                                <xs:restriction base="xs:token">
                                    <xs:enumeration value="PDBe"/>
                                    <xs:enumeration value="PDBj"/>
                                    <xs:enumeration value="RCSB"/>
                                    <xs:enumeration value="PDBc"/>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>
                        <xs:element name="last_processing">
                            <xs:simpleType>
                                <xs:restriction base="xs:token">
                                    <xs:enumeration value="PDBe"/>
                                    <xs:enumeration value="PDBj"/>
                                    <xs:enumeration value="RCSB"/>
                                    <xs:enumeration value="PDBc"/>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="key_dates">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="deposition" type="xs:date"/>
                        <xs:element name="header_release" type="xs:date" minOccurs="0"/>
                        <xs:element name="map_release" type="xs:date" minOccurs="0"/>
                        <xs:element name="obsolete" type="xs:date" minOccurs="0"/>
                        <xs:element name="update" type="xs:date"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="obsolete_list" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="entry" type="supersedes_type" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="superseded_by_list" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="entry" type="supersedes_type" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="grant_support" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="grant_reference" type="grant_reference_type"
                            maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="microscopy_center" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="name">
                            <xs:simpleType>
                                <xs:restriction base="xs:token">
                                    <xs:enumeration value="MICRO_CENTER_1"/>
                                    <xs:enumeration value="MICRO_CENTER_2"/>
                                    <xs:enumeration value="MICRO_CENTER_3"/>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>
                        <xs:element name="country">
                            <xs:simpleType>
                                <xs:restriction base="xs:token">
                                    <xs:enumeration value="UK"/>
                                    <xs:enumeration value="USA"/>
                                    <xs:enumeration value="Japan"/>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="contact_author" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:complexContent>
                        <xs:extension base="contact_details_type">
                            <xs:attribute name="private" fixed="true" use="required"/>
                        </xs:extension>
                    </xs:complexContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="title" type="xs:token"/>
            <xs:element name="authors_list">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="author" type="author_ORCID_type" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="details" type="xs:token" minOccurs="0"/>
            <xs:element name="keywords" type="xs:string" minOccurs="0"/>
            <xs:element name="replace_existing_entry" type="xs:boolean" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="composite_map" type="xs:boolean"/>
    </xs:complexType>
    <xs:complexType name="version_list_type">
        <xs:sequence>
            <xs:element name="status" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:complexContent>
                        <xs:extension base="version_type">
                            <xs:attribute name="status_id" type="xs:positiveInteger" use="required"
                            />
                        </xs:extension>
                    </xs:complexContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="version_type">
        <xs:sequence>
            <xs:element name="date" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:date">
                        <xs:minInclusive value="2002-01-01"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="code" type="code_type"/>
            <xs:element name="processing_site" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="PDBe"/>
                        <xs:enumeration value="RCSB"/>
                        <xs:enumeration value="PDBj"/>
                        <xs:enumeration value="PDBc"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="annotator" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:token">
                            <xs:attribute name="private" type="xs:token" fixed="true" use="required"
                            />
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="code_type">
        <xs:simpleContent>
            <xs:extension base="status_code_type">
                <xs:attribute name="superseded" type="xs:boolean"/>
                <xs:attribute name="supersedes" type="xs:boolean"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:simpleType name="status_code_type">
        <xs:restriction base="xs:token">
            <xs:enumeration value="AUCO"/>
            <xs:enumeration value="AUTH"/>
            <xs:enumeration value="AUXS"/>
            <xs:enumeration value="AUXU"/>
            <xs:enumeration value="HOLD"/>
            <xs:enumeration value="HOLD8W"/>
            <xs:enumeration value="HPUB"/>
            <xs:enumeration value="OBS"/>
            <xs:enumeration value="POLC"/>
            <xs:enumeration value="PROC"/>
            <xs:enumeration value="REFI"/>
            <xs:enumeration value="REL"/>
            <xs:enumeration value="REPL"/>
            <xs:enumeration value="REUP"/>
            <xs:enumeration value="WAIT"/>
            <xs:enumeration value="WDRN"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="supersedes_type">
        <xs:sequence>
            <xs:element name="date" type="xs:date"/>
            <xs:element name="entry" type="emdb_id_type"/>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="emdb_id_type">
        <xs:restriction base="xs:token">
            <xs:pattern value="EMD-\d{4,}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="grant_reference_type">
        <xs:sequence>
            <xs:element name="funding_body" type="xs:token"/>
            <xs:element name="code" type="xs:token" minOccurs="0"/>
            <xs:element name="country" type="xs:token" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="revision_history_type">
        <xs:sequence>
            <xs:element name="change_list" maxOccurs="1">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element ref="revision_change_sub_group" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="version" type="revision_history_version_type" use="required"/>
        <xs:attribute name="date" type="xs:date" use="required"/>
    </xs:complexType>
    <xs:simpleType name="revision_history_version_type">
        <xs:restriction base="xs:token">
            <xs:pattern value="[0-9]+\.[0-9]+"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="revision_change_sub_group" type="base_revision_change_type" abstract="true"/>
    <xs:complexType name="base_revision_change_type">
        <xs:sequence>
            <xs:element name="revision_type" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="INITIAL_RELEASE"/>
                        <xs:enumeration value="COORDINATE_REPLACEMENT"/>
                        <xs:enumeration value="OBSOLETE"/>
                        <xs:enumeration value="REMEDIATION"/>
                        <xs:enumeration value="DATA_ADDED"/>
                        <xs:enumeration value="DATA_UPDATED"/>
                        <xs:enumeration value="DATA_REMOVED"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="provider" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="REPOSITORY"/>
                        <xs:enumeration value="AUTHOR"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="description" type="xs:token" minOccurs="0"/>
            <xs:element name="details" type="xs:token" minOccurs="0"/>
            <xs:element name="revision_group" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="ADVISORY"/>
                        <xs:enumeration value="ATOMIC_MODEL"/>
                        <xs:enumeration value="AUTHOR_SUPPORTING_EVIDENCE"/>
                        <xs:enumeration value="DATA_COLLECTION"/>
                        <xs:enumeration value="DATA_PROCESSING"/>
                        <xs:enumeration value="DATABASE_REFERENCES"/>
                        <xs:enumeration value="DERIVED_CALCULATIONS"/>
                        <xs:enumeration value="EXPERIMENTAL_DATA"/>
                        <xs:enumeration value="EXPERIMENTAL_PREPARATION"/>
                        <xs:enumeration value="EXPERIMENTAL_SUMMARY"/>
                        <xs:enumeration value="NON_POLYMER_DESCRIPTION"/>
                        <xs:enumeration value="OTHER"/>
                        <xs:enumeration value="POLYMER_SEQUENCE"/>
                        <xs:enumeration value="REFINEMENT_DESCRIPTION"/>
                        <xs:enumeration value="SOURCE_AND_TAXONOMY"/>
                        <xs:enumeration value="STRUCTURE_SUMMARY"/>
                        <xs:enumeration value="VERSION_FORMAT_COMPLIANCE"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="part_revision_change_type">
        <xs:complexContent>
            <xs:extension base="base_revision_change_type">
                <xs:attribute name="part" type="xs:positiveInteger"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="primary_map" substitutionGroup="revision_change_sub_group"/>
    <xs:element name="image" substitutionGroup="revision_change_sub_group"
        type="part_revision_change_type"/>
    <xs:element name="half_map" substitutionGroup="revision_change_sub_group"
        type="part_revision_change_type"/>
    <xs:element name="mask" substitutionGroup="revision_change_sub_group"
        type="part_revision_change_type"/>
    <xs:element name="fsc" substitutionGroup="revision_change_sub_group"
        type="part_revision_change_type"/>
    <xs:element name="additional_map" substitutionGroup="revision_change_sub_group"
        type="part_revision_change_type"/>
    <xs:element name="model" substitutionGroup="revision_change_sub_group"
        type="complex_revision_change_type"/>
    <xs:element name="metadata" substitutionGroup="revision_change_sub_group"
        type="complex_revision_change_type"/>
    <xs:complexType name="complex_revision_change_type">
        <xs:complexContent>
            <xs:extension base="base_revision_change_type">
                <xs:sequence>
                    <xs:element name="categories" minOccurs="0">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="category" type="xs:token" minOccurs="1"
                                    maxOccurs="unbounded"/>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="items" minOccurs="0">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="item" type="xs:token" minOccurs="1"
                                    maxOccurs="unbounded"/>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="contact_details_type">
        <xs:sequence>
            <xs:element name="role">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="INVESTIGATOR"/>
                        <xs:enumeration value="PRINCIPAL INVESTIGATOR/GROUP LEADER"/>
                        <xs:enumeration value="RESPONSIBLE SCIENTIST"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="title">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="DR."/>
                        <xs:enumeration value="MR."/>
                        <xs:enumeration value="MRS."/>
                        <xs:enumeration value="MS."/>
                        <xs:enumeration value="PROF."/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="first_name" type="xs:token"/>
            <xs:element name="middle_name">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:pattern value="[A-Z]"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="last_name" type="xs:token"/>
            <xs:element name="organization">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:token">
                            <xs:attribute name="type" use="required">
                                <xs:simpleType>
                                    <xs:restriction base="xs:token">
                                        <xs:enumeration value="ACADEMIC"/>
                                        <xs:enumeration value="COMMERCIAL"/>
                                        <xs:enumeration value="GOVERMENT"/>
                                        <xs:enumeration value="OTHER"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:attribute>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="street" type="xs:string"/>
            <xs:element name="town_or_city" type="xs:token"/>
            <xs:element name="state_or_province" type="xs:token"/>
            <xs:element name="country" type="xs:token"/>
            <xs:element name="post_or_zip_code" type="xs:token"/>
            <xs:element name="email">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:pattern value="[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="telephone" type="telephone_number_type"/>
            <xs:element name="fax" type="telephone_number_type"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="telephone_number_type">
        <xs:sequence>
            <xs:element name="country">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:pattern value="\d{1,3}"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="area">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:pattern value="\d{2,5}"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="local">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:pattern value="\d+( ext. \d+)?"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="author_enums">
        <xs:restriction base="xs:string">
            <xs:enumeration
                value="Accelerated Technologies Center for Gene to 3D Structure (ATCG3D)"/>
            <xs:enumeration
                value="Assembly, Dynamics and Evolution of Cell-Cell and Cell-Matrix Adhesions (CELLMAT)"/>
            <xs:enumeration value="Atoms-to-Animals: The Immune Function Network (IFN)"/>
            <xs:enumeration value="Bacterial targets at IGS-CNRS, France (BIGS)"/>
            <xs:enumeration value="Berkeley Structural Genomics Center (BSGC)"/>
            <xs:enumeration value="Center for Eukaryotic Structural Genomics (CESG)"/>
            <xs:enumeration value="Center for High-Throughput Structural Biology (CHTSB)"/>
            <xs:enumeration value="Center for Membrane Proteins of Infectious Diseases (MPID)"/>
            <xs:enumeration value="Center for Structural Biology of Infectious Diseases (CSBID)"/>
            <xs:enumeration value="Center for Structural Genomics of Infectious Diseases (CSGID)"/>
            <xs:enumeration value="Center for Structures of Membrane Proteins (CSMP)"/>
            <xs:enumeration
                value="Center for the X-ray Structure Determination of Human Transporters (TransportPDB)"/>
            <xs:enumeration
                value="Chaperone-Enabled Studies of Epigenetic Regulation Enzymes (CEBS)"/>
            <xs:enumeration value="Enzyme Discovery for Natural Product Biosynthesis (NatPro)"/>
            <xs:enumeration value="GPCR Network (GPCR)"/>
            <xs:enumeration value="Integrated Center for Structure and Function Innovation (ISFI)"/>
            <xs:enumeration value="Israel Structural Proteomics Center (ISPC)"/>
            <xs:enumeration value="Joint Center for Structural Genomics (JCSG)"/>
            <xs:enumeration value="Marseilles Structural Genomics Program @ AFMB (MSGP)"/>
            <xs:enumeration value="Medical Structural Genomics of Pathogenic Protozoa (MSGPP)"/>
            <xs:enumeration value="Membrane Protein Structural Biology Consortium (MPSBC)"/>
            <xs:enumeration value="Membrane Protein Structures by Solution NMR (MPSbyNMR)"/>
            <xs:enumeration value="Midwest Center for Macromolecular Research (MCMR)"/>
            <xs:enumeration value="Midwest Center for Structural Genomics (MCSG)"/>
            <xs:enumeration value="Mitochondrial Protein Partnership (MPP)"/>
            <xs:enumeration
                value="Montreal-Kingston Bacterial Structural Genomics Initiative (BSGI)"/>
            <xs:enumeration value="Mycobacterium Tuberculosis Structural Proteomics Project (XMTB)"/>
            <xs:enumeration value="New York Consortium on Membrane Protein Structure (NYCOMPS)"/>
            <xs:enumeration value="New York SGX Research Center for Structural Genomics (NYSGXRC)"/>
            <xs:enumeration value="New York Structural GenomiX Research Consortium (NYSGXRC)"/>
            <xs:enumeration value="New York Structural Genomics Research Consortium (NYSGRC)"/>
            <xs:enumeration value="Northeast Structural Genomics Consortium (NESG)"/>
            <xs:enumeration
                value="Nucleocytoplasmic Transport: a Target for Cellular Control (NPCXstals)"/>
            <xs:enumeration value="Ontario Centre for Structural Proteomics (OCSP)"/>
            <xs:enumeration value="Oxford Protein Production Facility (OPPF)"/>
            <xs:enumeration value="Paris-Sud Yeast Structural Genomics (YSG)"/>
            <xs:enumeration value="Partnership for Nuclear Receptor Signaling Code Biology (NHRs)"/>
            <xs:enumeration value="Partnership for Stem Cell Biology (STEMCELL)"/>
            <xs:enumeration value="Partnership for T-Cell Biology (TCELL)"/>
            <xs:enumeration
                value="Program for the Characterization of Secreted Effector Proteins (PCSEP)"/>
            <xs:enumeration value="Protein Structure Factory (PSF)"/>
            <xs:enumeration value="QCRG Structural Biology Consortium"/>
            <xs:enumeration value="RIKEN Structural Genomics/Proteomics Initiative (RSGI)"/>
            <xs:enumeration value="Scottish Structural Proteomics Facility (SSPF)"/>
            <xs:enumeration
                value="Seattle Structural Genomics Center for Infectious Disease (SSGCID)"/>
            <xs:enumeration value="South Africa Structural Targets Annotation Database (SASTAD)"/>
            <xs:enumeration value="Southeast Collaboratory for Structural Genomics (SECSG)"/>
            <xs:enumeration value="Structural Genomics Consortium (SGC)"/>
            <xs:enumeration
                value="Structural Genomics Consortium for Research on Gene Expression (SGCGES)"/>
            <xs:enumeration value="Structural Genomics of Pathogenic Protozoa Consortium (SGPP)"/>
            <xs:enumeration value="Structural Proteomics in Europe (SPINE)"/>
            <xs:enumeration value="Structural Proteomics in Europe 2 (SPINE-2)"/>
            <xs:enumeration value="Structure 2 Function Project (S2F)"/>
            <xs:enumeration
                value="Structure, Dynamics and Activation Mechanisms of Chemokine Receptors (CHSAM)"/>
            <xs:enumeration
                value="Structure-Function Analysis of Polymorphic CDI Toxin-Immunity Protein Complexes (UC4CDI)"/>
            <xs:enumeration
                value="Structure-Function Studies of Tight Junction Membrane Proteins (TJMP)"/>
            <xs:enumeration
                value="Structures of Mtb Proteins Conferring Susceptibility to Known Mtb Inhibitors (MTBI)"/>
            <xs:enumeration value="TB Structural Genomics Consortium (TBSGC)"/>
            <xs:enumeration
                value="Transcontinental EM Initiative for Membrane Protein Structure (TEMIMPS)"/>
            <xs:enumeration value="Transmembrane Protein Center (TMPC)"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="author_type">
        <xs:union memberTypes="author_enums">
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:pattern
                        value="([A-Za-z' \-]+ (Jr.?|I|II|III|IV|1st|2nd|3rd|4th)?) ?([A-Za-z\-]*)"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:union>
    </xs:simpleType>
    <xs:simpleType name="ORCID_type">
        <xs:restriction base="xs:token">
            <xs:pattern value="[0-9]{4}-[0-9]{4}-[0-9]{4}-([0-9]{3}X|[0-9]{4})"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="author_ORCID_type">
        <xs:simpleContent>
            <xs:extension base="author_type">
                <xs:attribute name="ORCID" type="ORCID_type"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="author_order_type">
        <xs:simpleContent>
            <xs:extension base="author_ORCID_type">
                <xs:attribute name="order" type="xs:positiveInteger"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>

    <xs:complexType name="crossreferences_type">
        <xs:sequence>
            <xs:element name="citation_list">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="primary_citation">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element ref="citation_type"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="secondary_citation" minOccurs="0" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element ref="citation_type"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="emdb_list" type="emdb_cross_reference_list_type" minOccurs="0"/>
            <xs:element name="pdb_list" type="pdb_cross_reference_list_type" minOccurs="0"/>
            <xs:element name="other_db_list" type="other_db_cross_reference_list_type" minOccurs="0"/>
            <xs:element name="auxiliary_link_list" minOccurs="0">
                <xs:complexType>
                    <xs:sequence minOccurs="1" maxOccurs="1">
                        <xs:element name="auxiliary_link" type="auxiliary_link_type"
                            maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <!-- 
            <xs:element name="component_maps" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="component_map" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="comp_map_id" type="emdb_id_type" minOccurs="0"/>
                                    <xs:element name="details" type="xs:string" minOccurs="0"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            -->
        </xs:sequence>
    </xs:complexType>
    <xs:element name="citation_type" abstract="true"/>
    <xs:element name="journal_citation" substitutionGroup="citation_type">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="author" type="author_order_type" maxOccurs="unbounded"/>
                <xs:element name="title" type="xs:token"/>
                <xs:element name="journal" type="xs:token" minOccurs="0"/>
                <xs:element name="journal_abbreviation" type="xs:token"/>
                <xs:element name="country" type="xs:token" minOccurs="0"/>
                <xs:element name="issue" type="xs:positiveInteger" minOccurs="0"/>
                <xs:element name="volume" type="xs:string" nillable="true" minOccurs="0"/>
                <xs:element name="first_page" type="page_type" nillable="false" minOccurs="0"/>
                <xs:element name="last_page" type="page_type" minOccurs="0"/>
                <xs:element name="year" minOccurs="0">
                    <xs:simpleType>
                        <xs:restriction base="xs:gYear">
                            <xs:minInclusive value="1900"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
                <xs:element name="language" type="xs:language" minOccurs="0"/>
                <xs:element name="external_references" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:simpleContent>
                            <xs:extension base="xs:token">
                                <xs:attribute name="type" use="required">
                                    <xs:simpleType>
                                        <xs:restriction base="xs:token">
                                            <xs:enumeration value="PUBMED"/>
                                            <xs:enumeration value="DOI"/>
                                            <xs:enumeration value="ISBN"/>
                                            <xs:enumeration value="ISSN"/>
                                            <xs:enumeration value="CAS"/>
                                            <xs:whiteSpace value="collapse"/>
                                            <xs:enumeration value="CSD"/>
                                            <xs:enumeration value="MEDLINE"/>
                                            <xs:enumeration value="ASTM"/>
                                        </xs:restriction>
                                    </xs:simpleType>
                                </xs:attribute>
                            </xs:extension>
                        </xs:simpleContent>
                    </xs:complexType>
                </xs:element>
                <xs:element name="details" type="xs:string" minOccurs="0"/>
            </xs:sequence>
            <xs:attribute name="published" type="xs:boolean" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:simpleType name="page_type">
        <xs:restriction base="xs:string"/>
    </xs:simpleType>
    <xs:element name="non_journal_citation" substitutionGroup="citation_type">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="author" type="author_order_type" maxOccurs="unbounded"/>
                <xs:element name="editor" type="author_order_type" minOccurs="0"
                    maxOccurs="unbounded"/>
                <xs:element name="title" type="xs:token"/>
                <xs:element name="thesis_title" type="xs:token" minOccurs="0"/>
                <xs:element name="chapter_title" type="xs:token" minOccurs="0"/>
                <xs:element name="volume" type="xs:string" minOccurs="0"/>
                <xs:element name="publisher" type="xs:token" minOccurs="0"/>
                <xs:element name="publisher_location" type="xs:token" minOccurs="0"/>
                <xs:element name="first_page" type="page_type" minOccurs="0"/>
                <xs:element name="last_page" type="page_type" minOccurs="0"/>
                <xs:element name="year">
                    <xs:simpleType>
                        <xs:restriction base="xs:gYear">
                            <xs:minInclusive value="1900"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
                <xs:element name="language" type="xs:language" minOccurs="0"/>
                <xs:element name="external_references" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                        <xs:simpleContent>
                            <xs:extension base="xs:token">
                                <xs:attribute name="type" use="required">
                                    <xs:simpleType>
                                        <xs:restriction base="xs:token">
                                            <xs:enumeration value="PUBMED"/>
                                            <xs:enumeration value="DOI"/>
                                            <xs:enumeration value="ISBN"/>
                                            <xs:enumeration value="ISSN"/>
                                            <xs:enumeration value="CAS"/>
                                            <xs:whiteSpace value="collapse"/>
                                            <xs:enumeration value="CSD"/>
                                            <xs:enumeration value="MEDLINE"/>
                                            <xs:enumeration value="ASTM"/>
                                        </xs:restriction>
                                    </xs:simpleType>
                                </xs:attribute>
                            </xs:extension>
                        </xs:simpleContent>
                    </xs:complexType>
                </xs:element>
                <xs:element name="details" type="xs:string" minOccurs="0"/>
            </xs:sequence>
            <xs:attribute name="published" type="xs:boolean" use="required"/>
        </xs:complexType>
    </xs:element>
    <xs:complexType name="emdb_cross_reference_list_type">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element name="emdb_reference" type="emdb_cross_reference_type" maxOccurs="unbounded"
            />
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="emdb_cross_reference_type">
        <xs:sequence>
            <xs:element name="emdb_id" type="emdb_id_type"/>
            <xs:element name="relationship" minOccurs="0">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="in_frame">
                            <xs:simpleType>
                                <xs:restriction base="xs:token">
                                    <xs:enumeration value="NOOVERLAP"/>
                                    <xs:enumeration value="PARTIALOVERLAP"/>
                                    <xs:enumeration value="FULLOVERLAP"/>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>
                        <xs:element name="other" type="xs:string"/>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="pdb_cross_reference_list_type">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element name="pdb_reference" type="pdb_cross_reference_type" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="pdb_cross_reference_type">
        <xs:sequence>
            <xs:element name="pdb_id" type="pdb_code_type"/>
            <xs:element name="relationship" minOccurs="0">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="in_frame">
                            <xs:simpleType>
                                <xs:restriction base="xs:token">
                                    <xs:enumeration value="NOOVERLAP"/>
                                    <xs:enumeration value="PARTIALOVERLAP"/>
                                    <xs:enumeration value="FULLOVERLAP"/>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>
                        <xs:element name="other" type="xs:string"/>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="other_db_cross_reference_list_type">
        <xs:sequence minOccurs="1" maxOccurs="1">
            <xs:element name="db_reference" type="other_db_cross_reference_type"
                maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="other_db_cross_reference_type">
        <xs:sequence>
            <xs:element name="db_name" type="xs:token"/>
            <xs:element name="accession_id" type="xs:token"/>
            <xs:element name="content_type" type="xs:token" minOccurs="0"/>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="auxiliary_link_type">
        <xs:sequence>
            <xs:element name="type">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="2D EM DATA"/>
                        <xs:enumeration value="CORRELATIVE LIGHT MICROSCOPY"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="link">
                <xs:simpleType>
                    <xs:restriction base="xs:anyURI">
                        <xs:pattern value="(https?|ftp)://.*"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="sample_type">
        <xs:sequence>
            <xs:element name="name" type="sci_name_type"/>
            <xs:element name="supramolecule_list" maxOccurs="1">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element ref="supramolecule" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="macromolecule_list" type="macromolecule_list_type" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="sci_name_type">
        <xs:simpleContent>
            <xs:extension base="xs:token">
                <xs:attribute name="synonym" type="xs:token"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:element name="supramolecule" type="base_supramolecule_type" abstract="true"/>
    <xs:complexType name="base_supramolecule_type">
        <xs:sequence>
            <xs:element name="name" type="sci_name_type"/>
            <xs:element name="category" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="complex_category_type">
                            <xs:attribute name="type" use="required">
                                <xs:simpleType>
                                    <xs:restriction base="xs:token">
                                        <xs:enumeration value="GO"/>
                                        <xs:enumeration value="ARBITRARY DEFINITION"/>
                                        <xs:enumeration value="PROTEIN ONTOLOGY"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:attribute>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="parent" type="xs:nonNegativeInteger"/>
            <xs:element name="macromolecule_list" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="macromolecule" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="macromolecule_id" type="xs:positiveInteger"/>
                                    <xs:element name="number_of_copies" type="xs:positiveInteger"
                                        minOccurs="0"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
            <xs:element name="number_of_copies" type="pos_int_or_string_type" minOccurs="0"/>
            <xs:element name="oligomeric_state" type="pos_int_or_string_type" minOccurs="0"/>
            <xs:element name="external_references" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:token">
                            <xs:attribute name="type" use="required">
                                <xs:simpleType>
                                    <xs:restriction base="xs:token">
                                        <xs:enumeration value="UNIPROTKB"/>
                                        <xs:enumeration value="UNIPARC"/>
                                        <xs:enumeration value="INTERPRO"/>
                                        <xs:enumeration value="GO"/>
                                        <xs:enumeration value="NOR"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:attribute>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="recombinant_exp_flag" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="supramolecule_id" type="xs:positiveInteger" use="required"/>
    </xs:complexType>
    <xs:simpleType name="complex_category_type">
        <xs:restriction base="xs:token">
            <xs:pattern value="GO:\d+"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="pos_int_or_string_type">
        <xs:union memberTypes="xs:positiveInteger xs:string"/>
    </xs:simpleType>
    <xs:element name="cell_supramolecule" substitutionGroup="supramolecule"
        type="cell_supramolecule_type"/>
    <xs:complexType name="cell_supramolecule_type">
        <xs:complexContent>
            <xs:extension base="base_supramolecule_type">
                <xs:sequence>
                    <xs:element name="natural_source" type="cell_source_type" minOccurs="0"
                        maxOccurs="unbounded"/>
                    <xs:element name="synthetic_source" type="cell_source_type" minOccurs="0"
                        maxOccurs="unbounded"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="cell_source_type">
        <xs:complexContent>
            <xs:extension base="base_source_type">
                <xs:sequence>
                    <xs:element name="organ" type="xs:token" minOccurs="0"/>
                    <xs:element name="tissue" type="xs:token" minOccurs="0"/>
                    <xs:element name="cell" type="xs:token" minOccurs="0"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="base_source_type">
        <xs:sequence>
            <xs:element name="organism" type="organism_type"/>
            <xs:element name="strain" type="xs:token" minOccurs="0"/>
            <xs:element name="synonym_organism" type="xs:token" minOccurs="0"/>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="database">
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:enumeration value="NCBI"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
        <xs:attribute name="synthetically_produced" type="xs:boolean"/>
    </xs:complexType>
    <xs:complexType name="organism_type">
        <xs:simpleContent>
            <xs:extension base="xs:token">
                <xs:attribute name="ncbi" type="xs:positiveInteger"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:element name="complex_supramolecule" substitutionGroup="supramolecule"
        type="complex_supramolecule_type"/>
    <xs:complexType name="complex_supramolecule_type">
        <xs:complexContent>
            <xs:extension base="base_supramolecule_type">
                <xs:sequence>
                    <xs:element name="natural_source" type="complex_source_type" minOccurs="0"
                        maxOccurs="unbounded"/>
                    <xs:element name="synthetic_source" type="complex_source_type" minOccurs="0"
                        maxOccurs="unbounded"/>
                    <xs:element name="recombinant_expression" type="recombinant_source_type"
                        minOccurs="0" maxOccurs="unbounded"/>
                    <xs:element name="molecular_weight" type="molecular_weight_type" minOccurs="0"/>
                    <xs:element name="ribosome-details" type="xs:string" minOccurs="0"/>
                </xs:sequence>
                <xs:attribute name="chimera" type="xs:boolean" fixed="true"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="complex_source_type">
        <xs:complexContent>
            <xs:extension base="base_source_type">
                <xs:sequence>
                    <xs:element name="organ" type="xs:token" minOccurs="0"/>
                    <xs:element name="tissue" type="xs:token" minOccurs="0"/>
                    <xs:element name="cell" type="xs:token" minOccurs="0"/>
                    <xs:element name="organelle" type="xs:token" minOccurs="0"/>
                    <xs:element name="cellular_location" type="xs:token" minOccurs="0"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="recombinant_source_type">
        <xs:sequence>
            <xs:element name="recombinant_organism" type="organism_type"/>
            <xs:element name="recombinant_strain" type="xs:token" minOccurs="0"/>
            <xs:element name="recombinant_cell" type="xs:token" minOccurs="0"/>
            <xs:element name="recombinant_plasmid" type="xs:token" minOccurs="0"/>
            <xs:element name="recombinant_synonym_organism" type="xs:token" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="database" use="required">
            <xs:simpleType>
                <xs:restriction base="xs:token">
                    <xs:enumeration value="NCBI"/>
                </xs:restriction>
            </xs:simpleType>
        </xs:attribute>
    </xs:complexType>
    <xs:complexType name="molecular_weight_type">
        <xs:sequence>
            <xs:element name="experimental" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_assembly_weights">
                            <xs:attribute name="units" use="required">
                                <xs:simpleType>
                                    <xs:restriction base="xs:token">
                                        <xs:enumeration value="MDa"/>
                                        <xs:enumeration value="kDa/nm"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:attribute>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="theoretical" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_assembly_weights">
                            <xs:attribute name="units" use="required">
                                <xs:simpleType>
                                    <xs:restriction base="xs:token">
                                        <xs:enumeration value="MDa"/>
                                        <xs:enumeration value="kDa/nm"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:attribute>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="method" type="xs:token" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="allowed_assembly_weights">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="0.000000001"/>
            <xs:maxInclusive value="1000000000.0"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="organelle_or_cellular_component_supramolecule"
        substitutionGroup="supramolecule" type="organelle_or_cellular_component_supramolecule_type"/>
    <xs:complexType name="organelle_or_cellular_component_supramolecule_type">
        <xs:complexContent>
            <xs:extension base="base_supramolecule_type">
                <xs:sequence>
                    <xs:element name="natural_source" type="organelle_source_type" minOccurs="0"
                        maxOccurs="unbounded"/>
                    <xs:element name="synthetic_source" type="organelle_source_type" minOccurs="0"
                        maxOccurs="unbounded"/>
                    <xs:element name="molecular_weight" type="molecular_weight_type" minOccurs="0"/>
                    <xs:element name="recombinant_expression" type="recombinant_source_type"
                        minOccurs="0" maxOccurs="1"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="organelle_source_type">
        <xs:complexContent>
            <xs:extension base="base_source_type">
                <xs:sequence>
                    <xs:element name="organ" type="xs:token" minOccurs="0"/>
                    <xs:element name="tissue" type="xs:token" minOccurs="0"/>
                    <xs:element name="cell" type="xs:token" minOccurs="0"/>
                    <xs:element name="organelle" type="xs:token" minOccurs="0"/>
                    <xs:element name="cellular_location" type="xs:token" minOccurs="0"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="sample_supramolecule" substitutionGroup="supramolecule"
        type="sample_supramolecule_type"/>
    <xs:complexType name="sample_supramolecule_type">
        <xs:complexContent>
            <xs:extension base="base_supramolecule_type">
                <xs:sequence>
                    <xs:element name="natural_source" type="sample_source_type" minOccurs="0"
                        maxOccurs="unbounded"/>
                    <xs:element name="synthetic_source" type="sample_source_type" minOccurs="0"
                        maxOccurs="unbounded"/>
                    <xs:element name="number_unique_components" type="xs:positiveInteger"
                        minOccurs="0"/>
                    <xs:element name="molecular_weight" type="molecular_weight_type" minOccurs="0"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="sample_source_type">
        <xs:complexContent>
            <xs:extension base="base_source_type">
                <xs:sequence>
                    <xs:element name="organ" type="xs:token" minOccurs="0"/>
                    <xs:element name="tissue" type="xs:token" minOccurs="0"/>
                    <xs:element name="cell" type="xs:token" minOccurs="0"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="tissue_supramolecule" substitutionGroup="supramolecule"
        type="tissue_supramolecule_type"/>
    <xs:complexType name="tissue_supramolecule_type">
        <xs:complexContent>
            <xs:extension base="base_supramolecule_type">
                <xs:sequence>
                    <xs:element name="natural_source" type="tissue_source_type" minOccurs="0"
                        maxOccurs="unbounded"/>
                    <xs:element name="sythetic_source" type="tissue_source_type" minOccurs="0"
                        maxOccurs="unbounded"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="tissue_source_type">
        <xs:complexContent>
            <xs:extension base="base_source_type">
                <xs:sequence>
                    <xs:element name="organ" type="xs:token" minOccurs="0"/>
                    <xs:element name="tissue" type="xs:token" minOccurs="0"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="virus_supramolecule" substitutionGroup="supramolecule"
        type="virus_supramolecule_type"/>
    <xs:complexType name="virus_supramolecule_type">
        <xs:complexContent>
            <xs:extension base="base_supramolecule_type">
                <xs:sequence>
                    <xs:element name="sci_species_name" type="virus_species_name_type" minOccurs="0"/>
                    <xs:element name="sci_species_strain" type="xs:string" minOccurs="0"
                        maxOccurs="1"/>
                    <xs:element name="natural_host" type="virus_host_type" minOccurs="0"
                        maxOccurs="unbounded"/>
                    <xs:element name="synthetic_host" type="virus_host_type" minOccurs="0"
                        maxOccurs="unbounded"/>
                    <xs:element name="host_system" type="recombinant_source_type" minOccurs="0"/>
                    <xs:element name="molecular_weight" type="molecular_weight_type" minOccurs="0"/>
                    <xs:element name="virus_shell" minOccurs="0" maxOccurs="unbounded">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="name" type="xs:token" nillable="false"
                                    minOccurs="0"/>
                                <xs:element name="diameter" minOccurs="0">
                                    <xs:complexType>
                                        <xs:simpleContent>
                                            <xs:extension base="allowed_shell_diameter">
                                                <xs:attribute name="units" fixed="Å" use="required"
                                                />
                                            </xs:extension>
                                        </xs:simpleContent>
                                    </xs:complexType>
                                </xs:element>
                                <xs:element name="triangulation" type="xs:positiveInteger"
                                    minOccurs="0"/>
                            </xs:sequence>
                            <xs:attribute name="shell_id" type="xs:positiveInteger"/>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="virus_type">
                        <xs:simpleType>
                            <xs:restriction base="xs:token">
                                <xs:enumeration value="PRION"/>
                                <xs:enumeration value="SATELLITE"/>
                                <xs:enumeration value="VIRION"/>
                                <xs:enumeration value="VIROID"/>
                                <xs:enumeration value="VIRUS-LIKE PARTICLE"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element name="virus_isolate">
                        <xs:simpleType>
                            <xs:restriction base="xs:token">
                                <xs:enumeration value="OTHER"/>
                                <xs:enumeration value="SEROCOMPLEX"/>
                                <xs:enumeration value="SEROTYPE"/>
                                <xs:enumeration value="SPECIES"/>
                                <xs:enumeration value="STRAIN"/>
                                <xs:enumeration value="SUBSPECIES"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element name="virus_enveloped" type="xs:boolean"/>
                    <xs:element name="virus_empty" type="xs:boolean"/>
                    <xs:element name="syn_species_name" type="xs:string" minOccurs="0" maxOccurs="1"/>
                    <xs:element name="sci_species_serotype" type="xs:string" minOccurs="0"
                        maxOccurs="1"/>
                    <xs:element name="sci_species_serocomplex" type="xs:string" minOccurs="0"
                        maxOccurs="1"/>
                    <xs:element name="sci_species_subspecies" type="xs:string" minOccurs="0"
                        maxOccurs="1"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="virus_species_name_type">
        <xs:simpleContent>
            <xs:extension base="xs:token">
                <xs:attribute name="ncbi" type="xs:positiveInteger"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="virus_host_type">
        <xs:complexContent>
            <xs:extension base="base_source_type"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:simpleType name="allowed_shell_diameter">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="10"/>
            <xs:maxInclusive value="10000"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="macromolecule_list_type">
        <xs:sequence>
            <xs:element ref="macromolecule" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
    <xs:element name="macromolecule" type="base_macromolecule_type" abstract="true"/>
    <xs:complexType name="base_macromolecule_type">
        <xs:sequence>
            <xs:element name="name" type="sci_name_type"/>
            <xs:element name="natural_source" type="macromolecule_source_type" minOccurs="0"/>
            <xs:element name="molecular_weight" type="molecular_weight_type" minOccurs="0"/>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
            <xs:element name="number_of_copies" type="pos_int_or_string_type" minOccurs="0"/>
            <xs:element name="oligomeric_state" type="pos_int_or_string_type" minOccurs="0"/>
            <xs:element name="recombinant_exp_flag" type="xs:boolean" minOccurs="0" maxOccurs="1"/>
        </xs:sequence>
        <xs:attribute name="macromolecule_id" type="xs:positiveInteger" use="required"/>
        <xs:attribute name="mutant" type="xs:boolean"/>
        <xs:attribute name="chimera" type="xs:boolean"/>
    </xs:complexType>
    <xs:complexType name="macromolecule_source_type">
        <xs:complexContent>
            <xs:extension base="base_source_type">
                <xs:sequence>
                    <xs:element name="organ" type="xs:token" minOccurs="0"/>
                    <xs:element name="tissue" type="xs:token" minOccurs="0"/>
                    <xs:element name="cell" type="xs:token" minOccurs="0"/>
                    <xs:element name="organelle" type="xs:token" minOccurs="0"/>
                    <xs:element name="cellular_location" type="xs:token" minOccurs="0"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="dna" type="dna_macromolecule_type" substitutionGroup="macromolecule"/>
    <xs:complexType name="dna_macromolecule_type">
        <xs:complexContent>
            <xs:extension base="base_macromolecule_type">
                <xs:sequence>
                    <xs:element name="sequence">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="string" type="xs:token"/>
                                <xs:element name="discrepancy_list" minOccurs="0">
                                    <xs:complexType>
                                        <xs:sequence>
                                            <xs:element name="discrepancy" maxOccurs="unbounded">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:token">
                                                  <xs:pattern
                                                  value="[ ARNDCEQGHILKMFPSTWYVUOBZJX\(\)]\d+[ ARNDCEQGHILKMFPSTWYVUOBZJX\(\)]"
                                                  />
                                                  </xs:restriction>
                                                </xs:simpleType>
                                            </xs:element>
                                        </xs:sequence>
                                    </xs:complexType>
                                </xs:element>
                                <xs:element name="external_references" minOccurs="0"
                                    maxOccurs="unbounded">
                                    <xs:complexType>
                                        <xs:simpleContent>
                                            <xs:extension base="xs:token">
                                                <xs:attribute name="type" use="required">
                                                  <xs:simpleType>
                                                  <xs:restriction base="xs:token">
                                                  <xs:enumeration value="REFSEQ"/>
                                                  <xs:enumeration value="GENBANK"/>
                                                  <xs:whiteSpace value="collapse"/>
                                                  </xs:restriction>
                                                  </xs:simpleType>
                                                </xs:attribute>
                                            </xs:extension>
                                        </xs:simpleContent>
                                    </xs:complexType>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="classification" minOccurs="0">
                        <xs:simpleType>
                            <xs:restriction base="xs:token">
                                <xs:enumeration value="DNA"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element name="structure" type="xs:token" minOccurs="0"/>
                    <xs:element name="synthetic_flag" type="xs:boolean" minOccurs="0"/>
                    <xs:element name="synthetic_source" type="macromolecule_source_type"
                        minOccurs="0"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="em_label" type="em_label_macromolecule_type" substitutionGroup="macromolecule"/>
    <xs:complexType name="em_label_macromolecule_type">
        <xs:complexContent>
            <xs:extension base="base_macromolecule_type">
                <xs:sequence>
                    <xs:element name="formula" type="formula_type" minOccurs="0"/>
                    <xs:element name="synthetic_source" type="macromolecule_source_type"
                        minOccurs="0"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:simpleType name="formula_type">
        <xs:restriction base="xs:token"/>
    </xs:simpleType>
    <xs:element name="ligand" type="ligand_macromolecule_type" substitutionGroup="macromolecule"/>
    <xs:complexType name="ligand_macromolecule_type">
        <xs:complexContent>
            <xs:extension base="base_macromolecule_type">
                <xs:sequence>
                    <xs:element name="formula" type="formula_type" minOccurs="0"/>
                    <xs:element name="external_references" minOccurs="0" maxOccurs="unbounded">
                        <xs:complexType>
                            <xs:simpleContent>
                                <xs:extension base="xs:token">
                                    <xs:attribute name="type">
                                        <xs:simpleType>
                                            <xs:restriction base="xs:token">
                                                <xs:whiteSpace value="collapse"/>
                                                <xs:enumeration value="CAS"/>
                                                <xs:enumeration value="PUBCHEM"/>
                                                <xs:enumeration value="DRUGBANK"/>
                                                <xs:enumeration value="CHEBI"/>
                                                <xs:enumeration value="CHEMBL"/>
                                            </xs:restriction>
                                        </xs:simpleType>
                                    </xs:attribute>
                                </xs:extension>
                            </xs:simpleContent>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="recombinant_expression" type="recombinant_source_type"
                        minOccurs="0"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="other_macromolecule" type="other_macromolecule_type"
        substitutionGroup="macromolecule"/>
    <xs:complexType name="other_macromolecule_type">
        <xs:complexContent>
            <xs:extension base="base_macromolecule_type">
                <xs:sequence>
                    <xs:element name="sequence" minOccurs="0">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="string">
                                    <xs:simpleType>
                                        <xs:restriction base="xs:token"/>
                                    </xs:simpleType>
                                </xs:element>
                                <xs:element name="discrepancy_list" minOccurs="0">
                                    <xs:complexType>
                                        <xs:sequence>
                                            <xs:element name="discrepancy" maxOccurs="unbounded">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:token">
                                                  <xs:pattern
                                                  value="[AGCTRYSWKMBDHVN\.-]\d+[AGCTRYSWKMBDHVN\.-]"
                                                  />
                                                  </xs:restriction>
                                                </xs:simpleType>
                                            </xs:element>
                                        </xs:sequence>
                                    </xs:complexType>
                                </xs:element>
                                <xs:element name="external_references" minOccurs="0"
                                    maxOccurs="unbounded">
                                    <xs:complexType>
                                        <xs:simpleContent>
                                            <xs:extension base="xs:token">
                                                <xs:attribute name="type" type="xs:token"
                                                  use="required"/>
                                            </xs:extension>
                                        </xs:simpleContent>
                                    </xs:complexType>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="classification" type="xs:token"/>
                    <xs:element name="recombinant_expression" type="recombinant_source_type"
                        minOccurs="0"/>
                    <xs:element name="structure" type="xs:token" minOccurs="0"/>
                    <xs:element name="synthetic_flag" type="xs:boolean" minOccurs="0"/>
                    <xs:element name="synthetic_source" type="macromolecule_source_type"
                        minOccurs="0"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="protein_or_peptide" type="protein_or_peptide_macromolecule_type"
        substitutionGroup="macromolecule"/>
    <xs:complexType name="protein_or_peptide_macromolecule_type">
        <xs:complexContent>
            <xs:extension base="base_macromolecule_type">
                <xs:sequence>
                    <xs:element name="recombinant_expression" type="recombinant_source_type"
                        minOccurs="0"/>
                    <xs:element name="synthetic_source" type="macromolecule_source_type"
                        minOccurs="0"/>
                    <xs:element name="enantiomer">
                        <xs:simpleType>
                            <xs:restriction base="xs:token">
                                <xs:enumeration value="LEVO"/>
                                <xs:enumeration value="DEXTRO"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element name="sequence">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="string" type="xs:token" minOccurs="0"/>
                                <xs:element name="discrepancy_list" minOccurs="0">
                                    <xs:complexType>
                                        <xs:sequence>
                                            <xs:element name="discrepancy" maxOccurs="unbounded">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:token">
                                                  <xs:pattern
                                                  value="[ARNDCEQGHILKMFPSTWYVUOBZJX]\d+[ARNDCEQGHILKMFPSTWYVUOBZJX]"
                                                  />
                                                  </xs:restriction>
                                                </xs:simpleType>
                                            </xs:element>
                                        </xs:sequence>
                                    </xs:complexType>
                                </xs:element>
                                <xs:element name="connectivity" minOccurs="0">
                                    <xs:complexType>
                                        <xs:sequence>
                                            <xs:element minOccurs="0" name="_n-link">
                                                <xs:complexType>
                                                  <xs:sequence>
                                                  <xs:element name="molecule_id"/>
                                                  </xs:sequence>
                                                </xs:complexType>
                                            </xs:element>
                                            <xs:element minOccurs="0" name="_c-link">
                                                <xs:complexType>
                                                  <xs:sequence>
                                                  <xs:element name="molecule_id"/>
                                                  </xs:sequence>
                                                </xs:complexType>
                                            </xs:element>
                                        </xs:sequence>
                                    </xs:complexType>
                                </xs:element>
                                <xs:element name="external_references" minOccurs="0"
                                    maxOccurs="unbounded">
                                    <xs:complexType>
                                        <xs:simpleContent>
                                            <xs:extension base="xs:token">
                                                <xs:attribute name="type" use="required">
                                                  <xs:simpleType>
                                                  <xs:restriction base="xs:token">
                                                  <xs:enumeration value="UNIPROTKB"/>
                                                  <xs:enumeration value="UNIPARC"/>
                                                  <xs:enumeration value="INTERPRO"/>
                                                  <xs:enumeration value="GO"/>
                                                  <xs:enumeration value="GENBANK"/>
                                                  <xs:enumeration value="NOR"/>
                                                  </xs:restriction>
                                                  </xs:simpleType>
                                                </xs:attribute>
                                            </xs:extension>
                                        </xs:simpleContent>
                                    </xs:complexType>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="ec_number" minOccurs="0" maxOccurs="unbounded">
                        <xs:simpleType>
                            <xs:restriction base="xs:token">
                                <xs:pattern
                                    value="([1-7]((.[1-9][0-9]?)|(.-))((.[1-9][0-9]?)|(.-))((.[1-9][0-9]?[0-9]?)|(.-)))(([ ]*,[ ]*)([1-6]((.[1-9][0-9]?)|(.-))((.[1-9][0-9]?)|(.-))((.[1-9][0-9]?[0-9]?)|(.-))))*"
                                />
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="rna" type="rna_macromolecule_type" substitutionGroup="macromolecule"/>
    <xs:complexType name="rna_macromolecule_type">
        <xs:complexContent>
            <xs:extension base="base_macromolecule_type">
                <xs:sequence>
                    <xs:element name="sequence">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="string" type="xs:token"/>
                                <xs:element name="discrepancy_list" minOccurs="0">
                                    <xs:complexType>
                                        <xs:sequence>
                                            <xs:element name="discrepancy" maxOccurs="unbounded">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:token">
                                                  <xs:pattern
                                                  value="[ ARNDCEQGHILKMFPSTWYVUOBZJX\(\)]\d+[ ARNDCEQGHILKMFPSTWYVUOBZJX\(\)]"
                                                  />
                                                  </xs:restriction>
                                                </xs:simpleType>
                                            </xs:element>
                                        </xs:sequence>
                                    </xs:complexType>
                                </xs:element>
                                <xs:element name="external_references" minOccurs="0"
                                    maxOccurs="unbounded">
                                    <xs:complexType>
                                        <xs:simpleContent>
                                            <xs:extension base="xs:token">
                                                <xs:attribute name="type">
                                                  <xs:simpleType>
                                                  <xs:restriction base="xs:token">
                                                  <xs:enumeration value="REFSEQ"/>
                                                  <xs:enumeration value="GENBANK"/>
                                                  <xs:enumeration value="UNIPROTKB"/>
                                                  <xs:enumeration value="NOR"/>
                                                  <xs:whiteSpace value="collapse"/>
                                                  </xs:restriction>
                                                  </xs:simpleType>
                                                </xs:attribute>
                                            </xs:extension>
                                        </xs:simpleContent>
                                    </xs:complexType>
                                </xs:element>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="classification" minOccurs="0">
                        <xs:simpleType>
                            <xs:restriction base="xs:token">
                                <xs:enumeration value="MESSENGER"/>
                                <xs:enumeration value="TRANSFER"/>
                                <xs:enumeration value="RIBOSOMAL"/>
                                <xs:enumeration value="NON-CODING"/>
                                <xs:enumeration value="INTERFERENCE"/>
                                <xs:enumeration value="SMALL INTERFERENCE"/>
                                <xs:enumeration value="GENOMIC"/>
                                <xs:enumeration value="PRE-MESSENGER"/>
                                <xs:enumeration value="SMALL NUCLEOLAR"/>
                                <xs:enumeration value="TRANSFER-MESSENGER"/>
                                <xs:enumeration value="OTHER"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element name="structure" type="xs:token" minOccurs="0"/>
                    <xs:element name="synthetic_flag" type="xs:boolean" minOccurs="0"/>
                    <xs:element name="synthetic_source" type="macromolecule_source_type"
                        minOccurs="0"/>
                    <xs:element name="ec_number" minOccurs="0" maxOccurs="unbounded">
                        <xs:simpleType>
                            <xs:restriction base="xs:token">
                                <xs:pattern value="\d+(\.(\d+|\-)){3}"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="saccharide" type="saccharide_macromolecule_type"
        substitutionGroup="macromolecule"/>
    <xs:complexType name="saccharide_macromolecule_type">
        <xs:complexContent>
            <xs:extension base="base_macromolecule_type">
                <xs:sequence>
                    <xs:element name="enantiomer">
                        <xs:simpleType>
                            <xs:restriction base="xs:token">
                                <xs:enumeration value="LEVO"/>
                                <xs:enumeration value="DEXTRO"/>
                            </xs:restriction>
                        </xs:simpleType>
                    </xs:element>
                    <xs:element name="formula" type="formula_type" minOccurs="0"/>
                    <xs:element name="external_references" minOccurs="0" maxOccurs="unbounded">
                        <xs:complexType>
                            <xs:simpleContent>
                                <xs:extension base="xs:token">
                                    <xs:attribute name="type">
                                        <xs:simpleType>
                                            <xs:restriction base="xs:token">
                                                <xs:enumeration value="CARDBANK"/>
                                                <xs:whiteSpace value="collapse"/>
                                            </xs:restriction>
                                        </xs:simpleType>
                                    </xs:attribute>
                                </xs:extension>
                            </xs:simpleContent>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="structure_determination_type">
        <xs:sequence>
            <xs:element name="method">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="singleParticle"/>
                        <xs:enumeration value="subtomogramAveraging"/>
                        <xs:enumeration value="tomography"/>
                        <xs:enumeration value="electronCrystallography"/>
                        <xs:enumeration value="helical"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="aggregation_state">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="particle"/>
                        <xs:enumeration value="filament"/>
                        <xs:enumeration value="twoDArray"/>
                        <xs:enumeration value="threeDArray"/>
                        <xs:enumeration value="helicalArray"/>
                        <xs:enumeration value="cell"/>
                        <xs:enumeration value="tissue"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="macromolecules_and_complexes" type="macromolecules_and_complexes_type"
                minOccurs="0"/>
            <xs:element name="specimen_preparation_list">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element ref="specimen_preparation" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="microscopy_list">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element ref="microscopy" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element ref="image_processing" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="structure_determination_id" type="xs:positiveInteger" use="required"/>
    </xs:complexType>
    <xs:complexType name="macromolecules_and_complexes_type">
        <xs:choice maxOccurs="unbounded">
            <xs:element name="macromolecule_id" type="xs:positiveInteger"/>
            <xs:element name="complex_id" type="xs:nonNegativeInteger"/>
        </xs:choice>
    </xs:complexType>
    <xs:element name="specimen_preparation" type="base_preparation_type" abstract="true"/>
    <xs:complexType name="base_preparation_type">
        <xs:sequence>
            <xs:element name="concentration" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_concentration">
                            <xs:attribute name="units" use="required">
                                <xs:simpleType>
                                    <xs:restriction base="xs:string">
                                        <xs:enumeration value="mg/mL"/>
                                        <xs:enumeration value="mM"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:attribute>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="buffer" type="buffer_type" minOccurs="0"/>
            <xs:element name="staining" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="type">
                            <xs:simpleType>
                                <xs:restriction base="xs:token">
                                    <xs:enumeration value="NEGATIVE"/>
                                    <xs:enumeration value="NONE"/>
                                    <xs:enumeration value="POSITIVE"/>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>
                        <xs:element name="material" type="xs:token"/>
                        <xs:element name="details" type="xs:string" minOccurs="0"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="sugar_embedding" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="material" type="xs:token"/>
                        <xs:element name="details" type="xs:string" minOccurs="0"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="shadowing" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="material" type="xs:token"/>
                        <xs:element name="angle">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="allowed_angle_shadowing">
                                        <xs:attribute name="units" type="xs:token" fixed="deg"
                                            use="required"/>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="thickness">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="allowed_thickness_shadowing">
                                        <xs:attribute name="units" type="xs:token" fixed="nm"
                                            use="required"/>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="details" type="xs:string" minOccurs="0"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="grid" type="grid_type" minOccurs="0"/>
            <xs:element name="vitrification" type="vitrification_type" minOccurs="0"/>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="preparation_id" type="xs:positiveInteger" use="required"/>
    </xs:complexType>
    <xs:simpleType name="allowed_concentration">
        <xs:restriction base="xs:float">
            <xs:minExclusive value="0"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="buffer_type">
        <xs:sequence>
            <xs:element name="ph">
                <xs:simpleType>
                    <xs:restriction base="xs:float">
                        <xs:minInclusive value="0"/>
                        <xs:maxInclusive value="14"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="component" type="buffer_component_type" minOccurs="0"
                maxOccurs="unbounded"/>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="buffer_component_type">
        <xs:sequence>
            <xs:element name="concentration" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_concentration">
                            <xs:attribute name="units" type="xs:token" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="formula" type="formula_type" minOccurs="0"/>
            <xs:element name="name" type="xs:token" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="allowed_angle_shadowing">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="90"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="allowed_thickness_shadowing">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="0.1"/>
            <xs:maxInclusive value="30"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="grid_type">
        <xs:sequence>
            <xs:element name="model" type="xs:token" minOccurs="0"/>
            <xs:element name="material" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="COPPER"/>
                        <xs:enumeration value="COPPER/PALLADIUM"/>
                        <xs:enumeration value="COPPER/RHODIUM"/>
                        <xs:enumeration value="GOLD"/>
                        <xs:enumeration value="GRAPHENE OXIDE"/>
                        <xs:enumeration value="MOLYBDENUM"/>
                        <xs:enumeration value="NICKEL"/>
                        <xs:enumeration value="NICKEL/TITANIUM"/>
                        <xs:enumeration value="PLATINUM"/>
                        <xs:enumeration value="SILICON NITRIDE"/>
                        <xs:enumeration value="TITANIUM"/>
                        <xs:enumeration value="TUNGSTEN"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="mesh" type="xs:positiveInteger" minOccurs="0"/>
            <xs:element name="support_film" type="film_type" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="pretreatment" type="grid_pretreatment_type" minOccurs="0"/>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="film_type">
        <xs:sequence>
            <xs:element name="film_material" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="CARBON"/>
                        <xs:enumeration value="CELLULOSE ACETATE"/>
                        <xs:enumeration value="FORMVAR"/>
                        <xs:enumeration value="GOLD"/>
                        <xs:enumeration value="GRAPHENE"/>
                        <xs:enumeration value="GRAPHENE OXIDE"/>
                        <xs:enumeration value="PARLODION"/>
                        <xs:enumeration value="SILICON DIOXIDE"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="film_topology" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="CONTINUOUS"/>
                        <xs:enumeration value="HOLEY"/>
                        <xs:enumeration value="HOLEY ARRAY"/>
                        <xs:enumeration value="LACEY"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="film_thickness" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_film_thickness">
                            <xs:attribute name="units" type="xs:token" fixed="nm"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="film_type_id" type="xs:positiveInteger" use="required"/>
    </xs:complexType>
    <xs:simpleType name="allowed_film_thickness">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="0"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="grid_pretreatment_type">
        <xs:sequence>
            <xs:element name="type" type="xs:token" minOccurs="0"/>
            <xs:element name="time" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_time_glow_discharge">
                            <xs:attribute name="units" type="xs:token" fixed="s" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="atmosphere" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="AIR"/>
                        <xs:enumeration value="AMYLAMINE"/>
                        <xs:enumeration value="NITROGEN"/>
                        <xs:enumeration value="OTHER"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="pressure" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_pressure_glow_discharge">
                            <xs:attribute name="units" type="xs:token" fixed="kPa" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="allowed_time_glow_discharge">
        <xs:restriction base="xs:positiveInteger">
            <xs:maxInclusive value="300"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="allowed_pressure_glow_discharge">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="0.0"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="vitrification_type">
        <xs:sequence>
            <xs:element name="cryogen_name">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="ETHANE"/>
                        <xs:enumeration value="ETHANE-PROPANE"/>
                        <xs:enumeration value="FREON 12"/>
                        <xs:enumeration value="FREON 22"/>
                        <xs:enumeration value="HELIUM"/>
                        <xs:enumeration value="METHANE"/>
                        <xs:enumeration value="NITROGEN"/>
                        <xs:enumeration value="OTHER"/>
                        <xs:enumeration value="PROPANE"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="chamber_humidity" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_humidity_vitrification">
                            <xs:attribute name="units" type="xs:token" fixed="percentage"
                                use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="chamber_temperature" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_temperature_vitrification">
                            <xs:attribute name="units" type="xs:token" fixed="K" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="instrument" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="CRYOSOL VITROJET"/>
                        <xs:enumeration value="EMS-002 RAPID IMMERSION FREEZER"/>
                        <xs:enumeration value="FEI VITROBOT MARK I"/>
                        <xs:enumeration value="FEI VITROBOT MARK II"/>
                        <xs:enumeration value="FEI VITROBOT MARK III"/>
                        <xs:enumeration value="FEI VITROBOT MARK IV"/>
                        <xs:enumeration value="GATAN CRYOPLUNGE 3"/>
                        <xs:enumeration value="HOMEMADE PLUNGER"/>
                        <xs:enumeration value="LEICA EM CPC"/>
                        <xs:enumeration value="LEICA EM GP"/>
                        <xs:enumeration value="LEICA KF80"/>
                        <xs:enumeration value="LEICA PLUNGER"/>
                        <xs:enumeration value="REICHERT-JUNG PLUNGER"/>
                        <xs:enumeration value="SPOTITON"/>
                        <xs:enumeration value="SPT LABTECH CHAMELEON"/>
                        <xs:enumeration value="ZEISS PLUNGE FREEZER CRYOBOX"/>
                        <xs:enumeration value="OTHER"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
            <xs:element name="timed_resolved_state" type="xs:token" minOccurs="0"/>
            <xs:element name="method" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="allowed_humidity_vitrification">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="100"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="allowed_temperature_vitrification">
        <xs:restriction base="xs:float"/>
    </xs:simpleType>
    <xs:element name="crystallography_preparation" type="crystallography_preparation_type"
        substitutionGroup="specimen_preparation"/>
    <xs:complexType name="crystallography_preparation_type">
        <xs:complexContent>
            <xs:extension base="base_preparation_type">
                <xs:sequence>
                    <xs:element name="crystal_formation" minOccurs="0">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="lipid_protein_ratio" type="xs:float" minOccurs="0"/>
                                <xs:element name="lipid_mixture" type="xs:token" minOccurs="0"/>
                                <xs:element name="instrument" type="xs:token" minOccurs="0"/>
                                <xs:element name="atmosphere" type="xs:token" minOccurs="0"/>
                                <xs:element name="temperature"
                                    type="crystal_formation_temperature_type" minOccurs="0"/>
                                <xs:element name="time" type="crystal_formation_time_type"
                                    minOccurs="0"/>
                                <xs:element name="details" type="xs:string" minOccurs="0"/>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="crystal_formation_temperature_type">
        <xs:simpleContent>
            <xs:extension base="allowed_crystal_formation_temperature_type">
                <xs:attribute name="units" type="xs:token" fixed="K" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:simpleType name="allowed_crystal_formation_temperature_type">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="270"/>
            <xs:maxInclusive value="343"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="crystal_formation_time_type">
        <xs:simpleContent>
            <xs:extension base="non_zero_float">
                <xs:attribute name="units" use="required">
                    <xs:simpleType>
                        <xs:restriction base="xs:token">
                            <xs:enumeration value="MINUTE"/>
                            <xs:enumeration value="HOUR"/>
                            <xs:enumeration value="DAY"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:attribute>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:element name="helical_preparation" type="helical_preparation_type"
        substitutionGroup="specimen_preparation"/>
    <xs:complexType name="helical_preparation_type">
        <xs:complexContent>
            <xs:extension base="base_preparation_type"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="single_particle_preparation" type="single_particle_preparation_type"
        substitutionGroup="specimen_preparation"/>
    <xs:complexType name="single_particle_preparation_type">
        <xs:complexContent>
            <xs:extension base="base_preparation_type"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="subtomogram_averaging_preparation"
        type="subtomogram_averaging_preparation_type" substitutionGroup="specimen_preparation"/>
    <xs:complexType name="subtomogram_averaging_preparation_type">
        <xs:complexContent>
            <xs:extension base="base_preparation_type"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="tomography_preparation" type="tomography_preparation_type"
        substitutionGroup="specimen_preparation"/>
    <xs:complexType name="tomography_preparation_type">
        <xs:complexContent>
            <xs:extension base="base_preparation_type">
                <xs:sequence>
                    <xs:element name="fiducial_markers_list" minOccurs="0">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="fiducial_marker" type="fiducial_marker_type"
                                    maxOccurs="unbounded"/>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="high_pressure_freezing" minOccurs="0">
                        <xs:complexType>
                            <xs:sequence>
                                <xs:element name="instrument">
                                    <xs:simpleType>
                                        <xs:restriction base="xs:token">
                                            <xs:enumeration value="BAL-TEC HPM 010"/>
                                            <xs:enumeration value="EMS-002 RAPID IMMERSION FREEZER"/>
                                            <xs:enumeration value="LEICA EM HPM100"/>
                                            <xs:enumeration value="LEICA EM PACT"/>
                                            <xs:enumeration value="LEICA EM PACT2"/>
                                            <xs:enumeration value="OTHER"/>
                                        </xs:restriction>
                                    </xs:simpleType>
                                </xs:element>
                                <xs:element name="details" type="xs:string" minOccurs="0"/>
                            </xs:sequence>
                        </xs:complexType>
                    </xs:element>
                    <xs:element name="embedding_material" type="xs:token" minOccurs="0"/>
                    <xs:element name="cryo_protectant" type="xs:token" minOccurs="0"/>
                    <xs:element name="sectioning" minOccurs="0">
                        <xs:complexType>
                            <xs:choice>
                                <xs:element name="ultramicrotomy">
                                    <xs:complexType>
                                        <xs:sequence>
                                            <xs:element name="instrument" type="xs:token"/>
                                            <xs:element name="temperature" type="temperature_type"/>
                                            <xs:element name="final_thickness"
                                                type="ultramicrotomy_final_thickness_type"/>
                                            <xs:element name="details" type="xs:string"
                                                minOccurs="0"/>
                                        </xs:sequence>
                                    </xs:complexType>
                                </xs:element>
                                <xs:element name="focused_ion_beam">
                                    <xs:complexType>
                                        <xs:sequence>
                                            <xs:element name="instrument">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:token">
                                                  <xs:enumeration value="DB235"/>
                                                  <xs:enumeration value="OTHER"/>
                                                  </xs:restriction>
                                                </xs:simpleType>
                                            </xs:element>
                                            <xs:element name="ion">
                                                <xs:simpleType>
                                                  <xs:restriction base="xs:token">
                                                  <xs:enumeration value="GALLIUM+"/>
                                                  <xs:enumeration value="OTHER"/>
                                                  </xs:restriction>
                                                </xs:simpleType>
                                            </xs:element>
                                            <xs:element name="voltage" type="fib_voltage_type"/>
                                            <xs:element name="current" type="fib_current_type"/>
                                            <xs:element name="dose_rate" type="fib_dose_rate_type"
                                                minOccurs="0"/>
                                            <xs:element name="duration" type="fib_duration_type"/>
                                            <xs:element name="temperature" type="temperature_type"/>
                                            <xs:element name="initial_thickness"
                                                type="fib_initial_thickness_type"/>
                                            <xs:element name="final_thickness"
                                                type="fib_final_thickness_type"/>
                                            <xs:element name="details" type="xs:string"
                                                minOccurs="0"/>
                                        </xs:sequence>
                                    </xs:complexType>
                                </xs:element>
                                <xs:element name="other_sectioning" type="xs:string"/>
                            </xs:choice>
                        </xs:complexType>
                    </xs:element>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="fiducial_marker_type">
        <xs:sequence>
            <xs:element name="fiducial_type" type="xs:token" minOccurs="0"/>
            <xs:element name="manufacturer" type="xs:token" minOccurs="0"/>
            <xs:element name="diameter" type="fiducial_marker_diameter_type"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="fiducial_marker_diameter_type">
        <xs:simpleContent>
            <xs:extension base="allowed_diameter_colloidal_gold">
                <xs:attribute name="units" type="xs:token" fixed="nanometer" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:simpleType name="allowed_diameter_colloidal_gold">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="0.1"/>
            <xs:maxInclusive value="100"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="temperature_type">
        <xs:simpleContent>
            <xs:extension base="allowed_temperature">
                <xs:attribute name="units" type="xs:token" fixed="K" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:simpleType name="allowed_temperature">
        <xs:restriction base="xs:float">
            <xs:minExclusive value="0"/>
            <xs:maxInclusive value="310"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="ultramicrotomy_final_thickness_type">
        <xs:simpleContent>
            <xs:extension base="allowed_microtome_thickness">
                <xs:attribute default="nm" name="units" type="xs:token"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:simpleType name="allowed_microtome_thickness">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="4"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="fib_voltage_type">
        <xs:simpleContent>
            <xs:extension base="allowed_focus_ion_voltage">
                <xs:attribute name="units" fixed="kV"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:simpleType name="allowed_focus_ion_voltage">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="0.1"/>
            <xs:maxInclusive value="50"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="fib_current_type">
        <xs:simpleContent>
            <xs:extension base="allowed_focus_ion_current">
                <xs:attribute name="units" fixed="nA"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:simpleType name="allowed_focus_ion_current">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="0.001"/>
            <xs:maxInclusive value="200"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="fib_dose_rate_type">
        <xs:simpleContent>
            <xs:extension base="allowed_focus_ion_dose_rate">
                <xs:attribute name="units" type="xs:token" default="ions/(cm^2*s)"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:simpleType name="allowed_focus_ion_dose_rate">
        <xs:restriction base="xs:float">
            <xs:minExclusive value="0"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="fib_duration_type">
        <xs:simpleContent>
            <xs:extension base="xs:float">
                <xs:attribute name="units" type="xs:token" fixed="s"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="fib_initial_thickness_type">
        <xs:simpleContent>
            <xs:extension base="allowed_focus_ion_initial_thickness">
                <xs:attribute name="units" type="xs:token" default="nm"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:simpleType name="allowed_focus_ion_initial_thickness">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="10"/>
            <xs:maxInclusive value="100000"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="fib_final_thickness_type">
        <xs:simpleContent>
            <xs:extension base="allowed_focus_ion_final_thickness">
                <xs:attribute name="units" type="xs:token" default="nm"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:simpleType name="allowed_focus_ion_final_thickness">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="10"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="microscopy" type="base_microscopy_type" abstract="true"/>
    <xs:complexType name="base_microscopy_type">
        <xs:sequence>
            <xs:element name="specimen_preparations" minOccurs="0">
                <xs:complexType>
                    <xs:sequence maxOccurs="unbounded">
                        <xs:element name="specimen_preparation_id" type="xs:positiveInteger"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="microscope">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="FEI MORGAGNI"/>
                        <xs:enumeration value="FEI POLARA 300"/>
                        <xs:enumeration value="FEI TALOS ARCTICA"/>
                        <xs:enumeration value="FEI TECNAI 10"/>
                        <xs:enumeration value="FEI TECNAI 12"/>
                        <xs:enumeration value="FEI TECNAI 20"/>
                        <xs:enumeration value="FEI TECNAI ARCTICA"/>
                        <xs:enumeration value="FEI TECNAI F20"/>
                        <xs:enumeration value="FEI TECNAI F30"/>
                        <xs:enumeration value="FEI TECNAI SPHERA"/>
                        <xs:enumeration value="FEI TECNAI SPIRIT"/>
                        <xs:enumeration value="FEI TITAN"/>
                        <xs:enumeration value="FEI TITAN KRIOS"/>
                        <xs:enumeration value="FEI/PHILIPS CM10"/>
                        <xs:enumeration value="FEI/PHILIPS CM12"/>
                        <xs:enumeration value="FEI/PHILIPS CM120T"/>
                        <xs:enumeration value="FEI/PHILIPS CM200FEG"/>
                        <xs:enumeration value="FEI/PHILIPS CM200FEG/SOPHIE"/>
                        <xs:enumeration value="FEI/PHILIPS CM200FEG/ST"/>
                        <xs:enumeration value="FEI/PHILIPS CM200FEG/UT"/>
                        <xs:enumeration value="FEI/PHILIPS CM200T"/>
                        <xs:enumeration value="FEI/PHILIPS CM300FEG/HE"/>
                        <xs:enumeration value="FEI/PHILIPS CM300FEG/ST"/>
                        <xs:enumeration value="FEI/PHILIPS CM300FEG/T"/>
                        <xs:enumeration value="FEI/PHILIPS EM400"/>
                        <xs:enumeration value="FEI/PHILIPS EM420"/>
                        <xs:enumeration value="HITACHI EF2000"/>
                        <xs:enumeration value="HITACHI H-9500SD"/>
                        <xs:enumeration value="HITACHI H3000 UHVEM"/>
                        <xs:enumeration value="HITACHI H7600"/>
                        <xs:enumeration value="HITACHI HF2000"/>
                        <xs:enumeration value="HITACHI HF3000"/>
                        <xs:enumeration value="JEOL 100CX"/>
                        <xs:enumeration value="JEOL 1000EES"/>
                        <xs:enumeration value="JEOL 1010"/>
                        <xs:enumeration value="JEOL 1200"/>
                        <xs:enumeration value="JEOL 1200EX"/>
                        <xs:enumeration value="JEOL 1200EXII"/>
                        <xs:enumeration value="JEOL 1230"/>
                        <xs:enumeration value="JEOL 1400"/>
                        <xs:enumeration value="JEOL 1400/HR + YPS FEG"/>
                        <xs:enumeration value="JEOL 2000EX"/>
                        <xs:enumeration value="JEOL 2000EXII"/>
                        <xs:enumeration value="JEOL 2010"/>
                        <xs:enumeration value="JEOL 2010F"/>
                        <xs:enumeration value="JEOL 2010HC"/>
                        <xs:enumeration value="JEOL 2010HT"/>
                        <xs:enumeration value="JEOL 2010UHR"/>
                        <xs:enumeration value="JEOL 2011"/>
                        <xs:enumeration value="JEOL 2100"/>
                        <xs:enumeration value="JEOL 2100F"/>
                        <xs:enumeration value="JEOL 2200FS"/>
                        <xs:enumeration value="JEOL 2200FSC"/>
                        <xs:enumeration value="JEOL 3000SFF"/>
                        <xs:enumeration value="JEOL 3100FEF"/>
                        <xs:enumeration value="JEOL 3100FFC"/>
                        <xs:enumeration value="JEOL 3200FS"/>
                        <xs:enumeration value="JEOL 3200FSC"/>
                        <xs:enumeration value="JEOL 4000"/>
                        <xs:enumeration value="JEOL 4000EX"/>
                        <xs:enumeration value="JEOL CRYO ARM 200"/>
                        <xs:enumeration value="JEOL CRYO ARM 300"/>
                        <xs:enumeration value="JEOL KYOTO-3000SFF"/>
                        <xs:enumeration value="TFS GLACIOS"/>
                        <xs:enumeration value="TFS KRIOS"/>
                        <xs:enumeration value="TFS TALOS"/>
                        <xs:enumeration value="TFS TALOS L120C"/>
                        <xs:enumeration value="TFS TALOS F200C"/>
                        <xs:enumeration value="TFS TITAN THEMIS"/>
                        <xs:enumeration value="TFS TUNDRA"/>
                        <xs:enumeration value="SHUIMU TOTEM 120S"/>
                        <xs:enumeration value="SHUIMU TOTEM 200S"/>
                        <xs:enumeration value="SHUIMU TOTEM 300S"/>
                        <xs:enumeration value="ZEISS LEO912"/>
                        <xs:enumeration value="ZEISS LIBRA120PLUS"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="illumination_mode">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="FLOOD BEAM"/>
                        <xs:enumeration value="SPOT SCAN"/>
                        <xs:enumeration value="OTHER"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="imaging_mode">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="4D-STEM"/>
                        <xs:enumeration value="BRIGHT FIELD"/>
                        <xs:enumeration value="DARK FIELD"/>
                        <xs:enumeration value="DIFFRACTION"/>
                        <xs:enumeration value="OTHER"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="electron_source">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="TUNGSTEN HAIRPIN"/>
                        <xs:enumeration value="LAB6"/>
                        <xs:enumeration value="OTHER"/>
                        <xs:enumeration value="FIELD EMISSION GUN"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="acceleration_voltage">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_acceleration_voltage">
                            <xs:attribute name="units" type="xs:token" fixed="kV" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="c2_aperture_diameter" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_c2_aperture_diameter">
                            <xs:attribute name="units" type="xs:token" fixed="µm" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="nominal_cs" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_nominal_cs">
                            <xs:attribute name="units" type="xs:token" fixed="mm" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="nominal_defocus_min" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_defocus_min">
                            <xs:attribute name="units" type="xs:token" fixed="µm" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="calibrated_defocus_min" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_defocus_min">
                            <xs:attribute name="units" type="xs:token" fixed="µm" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="nominal_defocus_max" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_defocus_max">
                            <xs:attribute name="units" type="xs:token" fixed="µm" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="calibrated_defocus_max" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_defocus_max">
                            <xs:attribute name="units" type="xs:token" fixed="µm" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="nominal_magnification" type="allowed_magnification" minOccurs="0"/>
            <xs:element name="calibrated_magnification" type="allowed_magnification" minOccurs="0"/>
            <xs:element name="specimen_holder_model" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="FISCHIONE 2550"/>
                        <xs:enumeration value="FISCHIONE INSTRUMENTS DUAL AXIS TOMOGRAPHY HOLDER"/>
                        <xs:enumeration value="FEI TITAN KRIOS AUTOGRID HOLDER"/>
                        <xs:enumeration
                            value="GATAN 626 SINGLE TILT LIQUID NITROGEN CRYO TRANSFER HOLDER"/>
                        <xs:enumeration
                            value="GATAN 910 MULTI-SPECIMEN SINGLE TILT CRYO TRANSFER HOLDER"/>
                        <xs:enumeration
                            value="GATAN 914 HIGH TILT LIQUID NITROGEN CRYO TRANSFER TOMOGRAPHY HOLDER"/>
                        <xs:enumeration
                            value="GATAN 915 DOUBLE TILT LIQUID NITROGEN CRYO TRANSFER HOLDER"/>
                        <xs:enumeration
                            value="GATAN CHDT 3504 DOUBLE TILT HIGH RESOLUTION NITROGEN COOLING HOLDER"/>
                        <xs:enumeration
                            value="GATAN CT3500 SINGLE TILT LIQUID NITROGEN CRYO TRANSFER HOLDER"/>
                        <xs:enumeration
                            value="GATAN CT3500TR SINGLE TILT ROTATION LIQUID NITROGEN CRYO TRANSFER HOLDER"/>
                        <xs:enumeration
                            value="GATAN ELSA 698 SINGLE TILT LIQUID NITROGEN CRYO TRANSFER HOLDER"/>
                        <xs:enumeration
                            value="GATAN HC 3500 SINGLE TILT HEATING/NITROGEN COOLING HOLDER"/>
                        <xs:enumeration
                            value="GATAN HCHDT 3010 DOUBLE TILT HIGH RESOLUTION HELIUM COOLING HOLDER"/>
                        <xs:enumeration
                            value="GATAN HCHST 3008 SINGLE TILT HIGH RESOLUTION HELIUM COOLING HOLDER"/>
                        <xs:enumeration value="GATAN HELIUM"/>
                        <xs:enumeration value="GATAN LIQUID NITROGEN"/>
                        <xs:enumeration
                            value="GATAN UHRST 3500 SINGLE TILT ULTRA HIGH RESOLUTION NITROGEN COOLING HOLDER"/>
                        <xs:enumeration
                            value="GATAN ULTDT ULTRA LOW TEMPERATURE DOUBLE TILT HELIUM COOLING HOLDER"/>
                        <xs:enumeration
                            value="GATAN ULTST ULTRA LOW TEMPERATURE SINGLE TILT HELIUM COOLING HOLDER"/>
                        <xs:enumeration value="HOME BUILD"/>
                        <xs:enumeration value="JEOL"/>
                        <xs:enumeration value="JEOL 3200FSC CRYOHOLDER"/>
                        <xs:enumeration value="OTHER"/>
                        <xs:enumeration value="PHILIPS ROTATION HOLDER"/>
                        <xs:enumeration value="SIDE ENTRY, EUCENTRIC"/>
                        <xs:enumeration value="JEOL CRYOSPECPORTER"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="cooling_holder_cryogen" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="HELIUM"/>
                        <xs:enumeration value="NITROGEN"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="temperature" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="temperature_min" type="temperature_type" minOccurs="0"/>
                        <xs:element name="temperature_max" type="temperature_type" minOccurs="0"/>
                        <xs:element name="temperature_average" type="temperature_type" minOccurs="0"
                        />
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="alignment_procedure" minOccurs="0">
                <xs:complexType>
                    <xs:choice>
                        <xs:element name="none">
                            <xs:complexType/>
                        </xs:element>
                        <xs:element name="basic">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="residual_tilt" type="residual_tilt_type"
                                        minOccurs="0"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="zemlin_tableau">
                            <xs:complexType/>
                        </xs:element>
                        <xs:element name="coma_free">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="residual_tilt" type="residual_tilt_type"
                                        minOccurs="0"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="other">
                            <xs:complexType/>
                        </xs:element>
                        <xs:element name="legacy">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="astigmatism" type="xs:string"/>
                                    <xs:element name="electron_beam_tilt_params" type="xs:string"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:choice>
                </xs:complexType>
            </xs:element>
            <xs:element name="specialist_optics" type="specialist_optics_type" minOccurs="0"/>
            <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
            <xs:element name="date" type="xs:date" minOccurs="0"/>
            <xs:element name="image_recording_list">
                <xs:complexType>
                    <xs:sequence maxOccurs="unbounded">
                        <xs:element name="image_recording">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="film_or_detector_model">
                                        <xs:complexType>
                                            <xs:simpleContent>
                                                <xs:extension base="allowed_film_or_detector_model">
                                                  <xs:attribute name="category">
                                                  <xs:simpleType>
                                                  <xs:restriction base="xs:string">
                                                  <xs:enumeration value="CCD"/>
                                                  <xs:enumeration value="CMOS"/>
                                                  <xs:enumeration value="DIRECT ELECTRON DETECTOR"/>
                                                  <xs:enumeration
                                                  value="STORAGE PHOSPOR (IMAGE PLATES)"/>
                                                  <xs:enumeration value="FILM"/>
                                                  </xs:restriction>
                                                  </xs:simpleType>
                                                  </xs:attribute>
                                                </xs:extension>
                                            </xs:simpleContent>
                                        </xs:complexType>
                                    </xs:element>
                                    <xs:element name="detector_mode" minOccurs="0">
                                        <xs:simpleType>
                                            <xs:restriction base="xs:token">
                                                <xs:enumeration value="COUNTING"/>
                                                <xs:enumeration value="INTEGRATING"/>
                                                <xs:enumeration value="OTHER"/>
                                                <xs:enumeration value="SUPER-RESOLUTION"/>
                                            </xs:restriction>
                                        </xs:simpleType>
                                    </xs:element>
                                    <xs:element name="digitization_details" minOccurs="0">
                                        <xs:complexType>
                                            <xs:sequence>
                                                <xs:element name="scanner" minOccurs="0">
                                                  <xs:simpleType>
                                                  <xs:restriction base="xs:token">
                                                  <xs:enumeration value="EIKONIX IEEE 488"/>
                                                  <xs:enumeration value="EMIL 10"/>
                                                  <xs:enumeration value="IMACON"/>
                                                  <xs:enumeration value="NIKON COOLSCAN"/>
                                                  <xs:enumeration value="NIKON SUPER COOLSCAN 9000"/>
                                                  <xs:enumeration value="OPTRONICS"/>
                                                  <xs:enumeration value="OTHER"/>
                                                  <xs:enumeration value="PATCHWORK DENSITOMETER"/>
                                                  <xs:enumeration value="PERKIN ELMER"/>
                                                  <xs:enumeration value="PRIMESCAN"/>
                                                  <xs:enumeration value="TEMSCAN"/>
                                                  <xs:enumeration value="ZEISS SCAI"/>
                                                  </xs:restriction>
                                                  </xs:simpleType>
                                                </xs:element>
                                                <xs:element name="dimensions" minOccurs="0">
                                                  <xs:complexType>
                                                  <xs:sequence>
                                                  <xs:element name="width" minOccurs="0">
                                                  <xs:complexType>
                                                  <xs:simpleContent>
                                                  <xs:extension base="xs:positiveInteger">
                                                  <xs:attribute name="units" type="xs:token"
                                                  fixed="pixel" use="required"/>
                                                  </xs:extension>
                                                  </xs:simpleContent>
                                                  </xs:complexType>
                                                  </xs:element>
                                                  <xs:element name="height" minOccurs="0">
                                                  <xs:complexType>
                                                  <xs:simpleContent>
                                                  <xs:extension base="xs:positiveInteger">
                                                  <xs:attribute name="units" type="xs:token"
                                                  fixed="pixel" use="required"/>
                                                  </xs:extension>
                                                  </xs:simpleContent>
                                                  </xs:complexType>
                                                  </xs:element>
                                                  </xs:sequence>
                                                  </xs:complexType>
                                                </xs:element>
                                                <xs:element name="sampling_interval" minOccurs="0">
                                                  <xs:complexType>
                                                  <xs:simpleContent>
                                                  <xs:extension base="allowed_scaning_interval">
                                                  <xs:attribute name="units" type="xs:token"
                                                  fixed="µm" use="required"/>
                                                  </xs:extension>
                                                  </xs:simpleContent>
                                                  </xs:complexType>
                                                </xs:element>
                                                <xs:element name="frames_per_image" type="xs:token"
                                                  minOccurs="0"/>
                                            </xs:sequence>
                                        </xs:complexType>
                                    </xs:element>
                                    <xs:element name="number_grids_imaged" type="xs:positiveInteger"
                                        minOccurs="0"/>
                                    <xs:element name="number_real_images" type="xs:positiveInteger"
                                        minOccurs="0"/>
                                    <xs:element name="number_diffraction_images"
                                        type="xs:positiveInteger" minOccurs="0"/>
                                    <xs:element name="average_exposure_time" minOccurs="0">
                                        <xs:complexType>
                                            <xs:simpleContent>
                                                <xs:extension
                                                  base="allowed_average_exposure_time_type">
                                                  <xs:attribute name="units" type="xs:token"
                                                  fixed="s" use="required"/>
                                                </xs:extension>
                                            </xs:simpleContent>
                                        </xs:complexType>
                                    </xs:element>
                                    <xs:element name="average_electron_dose_per_image" minOccurs="0">
                                        <xs:complexType>
                                            <xs:simpleContent>
                                                <xs:extension base="allowed_electron_dose">
                                                  <xs:attribute name="units" type="xs:token"
                                                  fixed="e/Å^2" use="required"/>
                                                </xs:extension>
                                            </xs:simpleContent>
                                        </xs:complexType>
                                    </xs:element>
                                    <xs:element name="detector_distance" type="xs:string"
                                        minOccurs="0"/>
                                    <xs:element name="details" type="xs:string" minOccurs="0"/>
                                    <xs:element name="od_range" type="xs:float" minOccurs="0"/>
                                    <xs:element name="bits_per_pixel" type="xs:float" minOccurs="0"
                                    />
                                </xs:sequence>
                                <xs:attribute name="image_recording_id" type="xs:positiveInteger"/>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="specimen_holder" type="xs:string" minOccurs="0"/>
            <xs:element name="tilt_angle_min" type="xs:string" minOccurs="0"/>
            <xs:element name="tilt_angle_max" type="xs:string" minOccurs="0"/>
            <xs:element name="objective_aperture" type="xs:float" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>
                        Diameter, in microns, of the objective aperture.
                    </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="microscope_serial_number" type="xs:string" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>
                        Microscope serial number.
                    </xs:documentation>
                </xs:annotation>
            </xs:element>
            <xs:element name="microscope_version" type="xs:string" minOccurs="0">
                <xs:annotation>
                    <xs:documentation>
                        Version of the microscope.
                    </xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
        <xs:attribute name="microscopy_id" type="xs:positiveInteger" use="required"/>
    </xs:complexType>
    <xs:simpleType name="allowed_acceleration_voltage">
        <xs:restriction base="xs:positiveInteger">
            <xs:minInclusive value="25"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="allowed_c2_aperture_diameter">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="2"/>
            <xs:maxInclusive value="150"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="allowed_nominal_cs">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="20"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="allowed_defocus_min">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="-20"/>
            <xs:maxInclusive value="20"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="allowed_defocus_max">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="-30"/>
            <xs:maxInclusive value="50"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="allowed_magnification">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="1000"/>
            <xs:maxInclusive value="500000"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="residual_tilt_type">
        <xs:simpleContent>
            <xs:extension base="xs:float">
                <xs:attribute name="units" type="xs:token" fixed="mrad" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:complexType name="specialist_optics_type">
        <xs:sequence>
            <xs:element name="phase_plate" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="ZERNIKE PHASE PLATE"/>
                        <xs:enumeration value="VOLTA PHASE PLATE"/>
                        <xs:enumeration value="OTHER"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="sph_aberration_corrector" type="xs:token" minOccurs="0"/>
            <xs:element name="chr_aberration_corrector" type="xs:token" minOccurs="0"/>
            <xs:element name="energy_filter" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="name" type="xs:token" minOccurs="0"/>
                        <xs:element name="slit_width" minOccurs="0">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="allowed_energy_filter_width">
                                        <xs:attribute name="units" type="xs:token" fixed="eV"
                                            use="required"/>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="lower_energy_threshold" minOccurs="0">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="allowed_energy_window">
                                        <xs:attribute name="units" type="xs:token" fixed="eV"
                                            use="required"/>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="upper_energy_threshold" minOccurs="0">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="allowed_energy_window">
                                        <xs:attribute name="units" type="xs:token" fixed="eV"
                                            use="required"/>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="allowed_energy_window">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="-500"/>
            <xs:maxInclusive value="500"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="allowed_energy_filter_width">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="1000"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="software_list_type">
        <xs:sequence>
            <xs:element name="software" type="software_type" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="software_type">
        <xs:sequence>
            <xs:element name="name" type="xs:token" minOccurs="0"/>
            <xs:element name="version" type="xs:token" minOccurs="0"/>
            <xs:element name="processing_details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="allowed_film_or_detector_model">
        <xs:restriction base="xs:token">
            <xs:enumeration value="AGFA SCIENTA FILM"/>
            <xs:enumeration value="DECTRIS SINGLA (1k x 1k)"/>
            <xs:enumeration value="DECTRIS ELA (1k x 0.5k)"/>
            <xs:enumeration value="DECTRIS ARINA (0.2k x 0.2k)"/>
            <xs:enumeration value="DIRECT ELECTRON APOLLO (4k x 4k)"/>
            <xs:enumeration value="DIRECT ELECTRON DE-10 (5k x 4k)"/>
            <xs:enumeration value="DIRECT ELECTRON DE-12 (4k x 3k)"/>
            <xs:enumeration value="DIRECT ELECTRON DE-16 (4k x 4k)"/>
            <xs:enumeration value="DIRECT ELECTRON DE-20 (5k x 3k)"/>
            <xs:enumeration value="DIRECT ELECTRON DE-64 (8k x 8k)"/>
            <xs:enumeration value="FEI CETA (4k x 4k)"/>
            <xs:enumeration value="FEI EAGLE (2k x 2k)"/>
            <xs:enumeration value="FEI EAGLE (4k x 4k)"/>
            <xs:enumeration value="FEI FALCON I (4k x 4k)"/>
            <xs:enumeration value="FEI FALCON II (4k x 4k)"/>
            <xs:enumeration value="FEI FALCON III (4k x 4k)"/>
            <xs:enumeration value="FEI FALCON IV (4k x 4k)"/>
            <xs:enumeration value="GATAN ALPINE (2.3k x 3.2k)"/>
            <xs:enumeration value="GATAN K2 (4k x 4k)"/>
            <xs:enumeration value="GATAN K2 BASE (4k x 4k)"/>
            <xs:enumeration value="GATAN K2 IS (4k x 4k)"/>
            <xs:enumeration value="GATAN K2 QUANTUM (4k x 4k)"/>
            <xs:enumeration value="GATAN K2 SUMMIT (4k x 4k)"/>
            <xs:enumeration value="GATAN K3 (6k x 4k)"/>
            <xs:enumeration value="GATAN K3 BIOCONTINUUM (6k x 4k)"/>
            <xs:enumeration value="GATAN K3 BIOQUANTUM (6k x 4k)"/>
            <xs:enumeration value="GATAN MULTISCAN"/>
            <xs:enumeration value="GATAN ORIUS SC1000 (4k x 2.7k)"/>
            <xs:enumeration value="GATAN ORIUS SC200 (2k x 2k)"/>
            <xs:enumeration value="GATAN ORIUS SC600 (2.7k x 2.7k)"/>
            <xs:enumeration value="GATAN ULTRASCAN 1000 (2k x 2k)"/>
            <xs:enumeration value="GATAN ULTRASCAN 10000 (10k x 10k)"/>
            <xs:enumeration value="GATAN ULTRASCAN 4000 (4k x 4k)"/>
            <xs:enumeration value="GENERIC CCD"/>
            <xs:enumeration value="GENERIC CCD (2k x 2k)"/>
            <xs:enumeration value="GENERIC CCD (4k x 4k)"/>
            <xs:enumeration value="GENERIC FILM"/>
            <xs:enumeration value="GENERIC GATAN"/>
            <xs:enumeration value="GENERIC GATAN (2k x 2k)"/>
            <xs:enumeration value="GENERIC GATAN (4k x 4k)"/>
            <xs:enumeration value="GENERIC IMAGE PLATES"/>
            <xs:enumeration value="GENERIC TVIPS"/>
            <xs:enumeration value="GENERIC TVIPS (2k x 2k)"/>
            <xs:enumeration value="GENERIC TVIPS (4k x 4k)"/>
            <xs:enumeration value="KODAK 4489 FILM"/>
            <xs:enumeration value="KODAK SO-163 FILM"/>
            <xs:enumeration value="OTHER"/>
            <xs:enumeration value="PROSCAN TEM-PIV (2k x 2k)"/>
            <xs:enumeration value="SIA 15C (3k x 3k)"/>
            <xs:enumeration value="TFS FALCON 4i (4k x 4k)"/>
            <xs:enumeration value="TVIPS TEMCAM-F216 (2k x 2k)"/>
            <xs:enumeration value="TVIPS TEMCAM-F224 (2k x 2k)"/>
            <xs:enumeration value="TVIPS TEMCAM-F415 (4k x 4k)"/>
            <xs:enumeration value="TVIPS TEMCAM-F416 (4k x 4k)"/>
            <xs:enumeration value="TVIPS TEMCAM-F816 (8k x 8k)"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="allowed_scaning_interval">
        <xs:restriction base="xs:float">
            <xs:minExclusive value="0"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="allowed_average_exposure_time_type">
        <xs:restriction base="xs:float">
            <xs:minExclusive value="0"/>
            <xs:maxExclusive value="240"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="allowed_electron_dose">
        <xs:restriction base="xs:float">
            <xs:minExclusive value="0"/>
            <xs:maxInclusive value="1000"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="crystallography_microscopy" type="crystallography_microscopy_type"
        substitutionGroup="microscopy"/>
    <xs:complexType name="crystallography_microscopy_type">
        <xs:complexContent>
            <xs:extension base="base_microscopy_type">
                <xs:sequence>
                    <xs:element name="camera_length">
                        <xs:complexType>
                            <xs:simpleContent>
                                <xs:extension base="allowed_camera_length">
                                    <xs:attribute name="units" type="xs:token" fixed="mm"
                                        use="required"/>
                                </xs:extension>
                            </xs:simpleContent>
                        </xs:complexType>
                    </xs:element>
                    <xs:choice>
                        <xs:element name="tilt_list" minOccurs="0">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="angle" maxOccurs="unbounded">
                                        <xs:simpleType>
                                            <xs:restriction base="xs:float">
                                                <xs:minInclusive value="-70"/>
                                                <xs:maxInclusive value="70"/>
                                            </xs:restriction>
                                        </xs:simpleType>
                                    </xs:element>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="tilt_series" type="tilt_series_type" minOccurs="0"
                            maxOccurs="unbounded"/>
                    </xs:choice>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:simpleType name="allowed_camera_length">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="3000"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="tilt_series_type">
        <xs:sequence>
            <xs:element name="axis1" type="axis_type"/>
            <xs:element name="axis2" minOccurs="0">
                <xs:complexType>
                    <xs:complexContent>
                        <xs:extension base="axis_type">
                            <xs:sequence>
                                <xs:element name="axis_rotation" type="xs:float" minOccurs="0"/>
                            </xs:sequence>
                        </xs:extension>
                    </xs:complexContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="axis_rotation" fixed="90" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="xs:float">
                            <xs:attribute name="units" type="xs:token" fixed="deg" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="axis_type">
        <xs:sequence>
            <xs:element name="min_angle" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_angle_tomography">
                            <xs:attribute name="units" fixed="deg" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="max_angle" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_angle_tomography">
                            <xs:attribute name="units" fixed="deg" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="angle_increment" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_angle_increment">
                            <xs:attribute name="units" fixed="deg" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="allowed_angle_tomography">
        <xs:restriction base="xs:float">
            <xs:minExclusive value="-90"/>
            <xs:maxExclusive value="90"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="allowed_angle_increment">
        <xs:restriction base="xs:float">
            <xs:minExclusive value="0"/>
            <xs:maxExclusive value="15"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="helical_microscopy" type="helical_microscopy_type"
        substitutionGroup="microscopy"/>
    <xs:complexType name="helical_microscopy_type">
        <xs:complexContent>
            <xs:extension base="base_microscopy_type"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="single_particle_microscopy" type="single_particle_microscopy_type"
        substitutionGroup="microscopy"/>
    <xs:complexType name="single_particle_microscopy_type">
        <xs:complexContent>
            <xs:extension base="base_microscopy_type"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="subtomogram_averaging_microscopy" type="tomography_microscopy_type"
        substitutionGroup="microscopy"/>
    <xs:element name="tomography_microscopy" type="tomography_microscopy_type"
        substitutionGroup="microscopy"/>
    <xs:complexType name="tomography_microscopy_type">
        <xs:complexContent>
            <xs:extension base="base_microscopy_type">
                <xs:sequence>
                    <xs:element name="tilt_series" type="tilt_series_type" minOccurs="0"
                        maxOccurs="unbounded"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="image_processing" type="base_image_processing_type" abstract="true"/>
    <xs:complexType name="base_image_processing_type">
        <xs:sequence>
            <xs:element name="image_recording_id" type="xs:positiveInteger"/>
            <xs:element name="details" type="xs:token" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="image_processing_id" type="xs:positiveInteger" use="required"/>
    </xs:complexType>
    <xs:element name="crystallography_processing" substitutionGroup="image_processing"
        type="crystallography_processing_type"/>
    <xs:complexType name="crystallography_processing_type">
        <xs:complexContent>
            <xs:extension base="base_image_processing_type">
                <xs:group ref="crystallography_proc_add_group"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:group name="crystallography_proc_add_group">
        <xs:sequence>
            <xs:element name="final_reconstruction" type="non_subtom_final_reconstruction_type"
                minOccurs="0"/>
            <xs:element name="crystal_parameters" type="crystal_parameters_type" minOccurs="0"/>
            <xs:element name="startup_model" type="starting_map_type" minOccurs="0"
                maxOccurs="unbounded"/>
            <xs:element name="ctf_correction" type="ctf_correction_type" minOccurs="0"/>
            <xs:element name="molecular_replacement" type="molecular_replacement_type" minOccurs="0"/>
            <xs:element name="lattice_distortion_correction_software_list" type="software_list_type"
                minOccurs="0"/>
            <xs:element name="symmetry_determination_software_list" type="software_list_type"
                minOccurs="0"/>
            <xs:element name="merging_software_list" type="software_list_type" minOccurs="0"/>
            <xs:element name="crystallography_statistics" type="crystallography_statistics_type"
                minOccurs="0"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="applied_symmetry_type">
        <xs:choice>
            <xs:element name="space_group" type="xs:int"/>
            <xs:element name="point_group">
                <xs:simpleType>
                    <xs:restriction base="point_group_symmetry_type">
                        <xs:pattern value="C\d+|D\d+|O|T|I"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="helical_parameters" type="helical_parameters_type"/>
        </xs:choice>
    </xs:complexType>
    <xs:simpleType name="point_group_symmetry_type">
        <xs:restriction base="xs:token">
            <xs:pattern value="C\d+|D\d+|O|T|I"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="helical_parameters_type">
        <xs:sequence>
            <xs:element name="delta_z">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_rise_type">
                            <xs:attribute name="units" type="xs:token" fixed="Å" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="delta_phi">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="allowed_twist_type">
                            <xs:attribute name="units" type="xs:token" fixed="deg" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="axial_symmetry">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:pattern value="[C|D][1-9][0-9]*"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="allowed_rise_type">
        <xs:restriction base="xs:float">
            <xs:minExclusive value="0"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="allowed_twist_type">
        <xs:restriction base="xs:float"/>
    </xs:simpleType>
    <xs:complexType name="non_subtom_final_reconstruction_type">
        <xs:complexContent>
            <xs:extension base="final_reconstruction_type">
                <xs:sequence>
                    <xs:element name="number_images_used" type="xs:positiveInteger" minOccurs="0"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:simpleType name="reconstruction_algorithm_type">
        <xs:restriction base="xs:token">
            <xs:enumeration value="ALGEBRAIC (ARTS)"/>
            <xs:enumeration value="BACK PROJECTION"/>
            <xs:enumeration value="EXACT BACK PROJECTION"/>
            <xs:enumeration value="FOURIER SPACE"/>
            <xs:enumeration value="SIMULTANEOUS ITERATIVE (SIRT)"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="resolution_type">
        <xs:restriction base="xs:float">
            <xs:minExclusive value="0"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="reconstruction_filtering_type">
        <xs:sequence>
            <xs:element name="background_masked" type="background_masked_type" minOccurs="0"/>
            <xs:element name="spatial_filtering" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="low_frequency_cutoff">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="xs:float">
                                        <xs:attribute name="units" fixed="1/Å" use="required"/>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="high_frequency_cutoff">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="xs:float">
                                        <xs:attribute name="units" fixed="1/Å" use="required"/>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="filter_function" type="xs:token"/>
                        <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
                        <xs:element name="details" type="xs:string" minOccurs="0"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="sharpening" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
                        <xs:element name="details" type="xs:string" minOccurs="0"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="b-factorSharpening" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="_brestore">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="allowed_brestore_type">
                                        <xs:attribute name="units" type="xs:token" fixed="Å^2"
                                            use="required"/>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
                        <xs:element name="details" type="xs:string" minOccurs="0"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="other" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
                        <xs:element name="details" type="xs:string" minOccurs="0"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="background_masked_type">
        <xs:sequence>
            <xs:element name="geometrical_shape">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="SPHERE"/>
                        <xs:enumeration value="SOFT SPHERE"/>
                        <xs:enumeration value="GAUSSIAN"/>
                        <xs:enumeration value="CIRCLE"/>
                        <xs:enumeration value="RECTANGLE"/>
                        <xs:enumeration value="CYLINDER"/>
                        <xs:enumeration value="OTHER"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element minOccurs="0" name="dimensions">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element minOccurs="0" name="radius">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="xs:float">
                                        <xs:attribute name="units" use="required">
                                            <xs:simpleType>
                                                <xs:restriction base="xs:token">
                                                  <xs:enumeration value="PIXEL"/>
                                                  <xs:enumeration value="Å"/>
                                                </xs:restriction>
                                            </xs:simpleType>
                                        </xs:attribute>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="width">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="xs:float">
                                        <xs:attribute name="units" use="required">
                                            <xs:simpleType>
                                                <xs:restriction base="xs:token">
                                                  <xs:enumeration value="PIXEL"/>
                                                  <xs:enumeration value="Å"/>
                                                </xs:restriction>
                                            </xs:simpleType>
                                        </xs:attribute>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="height">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="xs:float">
                                        <xs:attribute name="units" use="required">
                                            <xs:simpleType>
                                                <xs:restriction base="xs:token">
                                                  <xs:enumeration value="PIXEL"/>
                                                  <xs:enumeration value="Å"/>
                                                </xs:restriction>
                                            </xs:simpleType>
                                        </xs:attribute>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="depth">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="xs:float">
                                        <xs:attribute name="units" use="required">
                                            <xs:simpleType>
                                                <xs:restriction base="xs:token">
                                                  <xs:enumeration value="PIXEL"/>
                                                  <xs:enumeration value="Å"/>
                                                </xs:restriction>
                                            </xs:simpleType>
                                        </xs:attribute>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="allowed_brestore_type">
        <xs:restriction base="xs:float">
            <xs:maxExclusive value="0"/>
            <xs:minExclusive value="-1000"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="crystal_parameters_type">
        <xs:sequence>
            <xs:element name="unit_cell" type="unit_cell_type"/>
            <xs:choice>
                <xs:element name="plane_group">
                    <xs:simpleType>
                        <xs:restriction base="xs:token">
                            <xs:enumeration value="C 1 2"/>
                            <xs:enumeration value="C 2 2 2"/>
                            <xs:enumeration value="P 1"/>
                            <xs:enumeration value="P 1 2"/>
                            <xs:enumeration value="P 1 21"/>
                            <xs:enumeration value="P 2"/>
                            <xs:enumeration value="P 2 2 2"/>
                            <xs:enumeration value="P 2 2 21"/>
                            <xs:enumeration value="P 2 21 21"/>
                            <xs:enumeration value="P 3"/>
                            <xs:enumeration value="P 3 1 2"/>
                            <xs:enumeration value="P 3 2 1"/>
                            <xs:enumeration value="P 4"/>
                            <xs:enumeration value="P 4 2 2"/>
                            <xs:enumeration value="P 4 21 2"/>
                            <xs:enumeration value="P 6"/>
                            <xs:enumeration value="P 6 2 2"/>
                        </xs:restriction>
                    </xs:simpleType>
                </xs:element>
                <xs:element name="space_group" type="xs:token"/>
            </xs:choice>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="unit_cell_type">
        <xs:sequence>
            <xs:element name="a" type="cell_type"/>
            <xs:element name="b" type="cell_type"/>
            <xs:element name="c" type="cell_type"/>
            <xs:element name="c_sampling_length" type="cell_type" minOccurs="0"/>
            <xs:element name="gamma" type="cell_angle_type"/>
            <xs:element name="alpha" type="cell_angle_type" minOccurs="0"/>
            <xs:element name="beta" type="cell_angle_type" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="cell_type">
        <xs:simpleContent>
            <xs:extension base="allowed_cell_dim">
                <xs:attribute name="units" type="xs:token" fixed="Å" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:simpleType name="allowed_cell_dim">
        <xs:restriction base="xs:float">
            <xs:minExclusive value="0.0"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="cell_angle_type">
        <xs:simpleContent>
            <xs:extension base="allowed_cell_angle">
                <xs:attribute name="units" type="xs:token" fixed="deg" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:simpleType name="allowed_cell_angle">
        <xs:restriction base="xs:float">
            <xs:minExclusive value="0.0"/>
            <xs:maxExclusive value="180.0"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="starting_map_type">
        <xs:sequence>
            <xs:choice>
                <xs:element name="random_conical_tilt" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="number_images" type="xs:positiveInteger" minOccurs="0"/>
                            <xs:element name="tilt_angle" minOccurs="0">
                                <xs:complexType>
                                    <xs:simpleContent>
                                        <xs:extension base="allowed_tilt_angle_random_conical">
                                            <xs:attribute name="units" type="xs:token"
                                                fixed="degrees" use="required"/>
                                        </xs:extension>
                                    </xs:simpleContent>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
                            <xs:element name="details" type="xs:string" minOccurs="0"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="orthogonal_tilt" minOccurs="0">
                    <xs:complexType>
                        <xs:sequence>
                            <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
                            <xs:element name="number_images" type="xs:positiveInteger" minOccurs="0"/>
                            <xs:element name="tilt_angle1" minOccurs="0">
                                <xs:complexType>
                                    <xs:simpleContent>
                                        <xs:extension base="allowed_tilt_angle1Orthogonal">
                                            <xs:attribute name="units" type="xs:token"
                                                fixed="degrees" use="required"/>
                                        </xs:extension>
                                    </xs:simpleContent>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="tilt_angle2" minOccurs="0">
                                <xs:complexType>
                                    <xs:simpleContent>
                                        <xs:extension base="allowed_tilt_angle2Orthogonal">
                                            <xs:attribute name="units" type="xs:token"
                                                fixed="degrees" use="required"/>
                                        </xs:extension>
                                    </xs:simpleContent>
                                </xs:complexType>
                            </xs:element>
                            <xs:element name="details" type="xs:string" minOccurs="0"/>
                        </xs:sequence>
                    </xs:complexType>
                </xs:element>
                <xs:element name="emdb_id" type="emdb_id_type" minOccurs="0"/>
                <xs:element name="pdb_model" type="pdb_model_type" minOccurs="0"/>
                <xs:element name="insilico_model" type="xs:token" minOccurs="0"/>
                <xs:element name="other" type="xs:string" minOccurs="0"/>
            </xs:choice>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="type_of_model" type="xs:token"/>
    </xs:complexType>
    <xs:simpleType name="allowed_tilt_angle_random_conical">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="0"/>
            <xs:maxInclusive value="180"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="allowed_tilt_angle1Orthogonal">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="-50"/>
            <xs:maxInclusive value="-30"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:simpleType name="allowed_tilt_angle2Orthogonal">
        <xs:restriction base="xs:float">
            <xs:minInclusive value="30"/>
            <xs:maxInclusive value="50"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="pdb_model_type">
        <xs:sequence>
            <xs:element name="pdb_id" type="pdb_code_type" minOccurs="0"/>
            <xs:element name="chain_id_list" type="chain_type" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="pdb_code_type">
        <xs:restriction base="xs:token">
            <xs:pattern value="\d[\dA-Za-z]{3}|pdb_\d{5}[\dA-Za-z]{3}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="chain_type">
        <xs:sequence>
            <xs:element name="chain_id" type="chain_pdb_id" minOccurs="0" maxOccurs="unbounded"/>
            <xs:element name="residue_range" minOccurs="0" maxOccurs="1">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:pattern value="[+-]?[0-9]+-[+-]?[0-9]+"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="chain_pdb_id">
        <xs:restriction base="xs:token">
            <xs:pattern value="\d|[A-Za-z]{1,2}"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="ctf_correction_type">
        <xs:sequence>
            <xs:element name="phase_reversal" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="anisotropic" type="xs:boolean" minOccurs="0"/>
                        <xs:element name="correction_space" type="correction_space_type"
                            minOccurs="0"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="amplitude_correction" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="factor" type="xs:float" minOccurs="0"/>
                        <xs:element name="correction_space" type="correction_space_type"
                            minOccurs="0"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="correction_operation" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="MULTIPLICATION"/>
                        <xs:enumeration value="DIVISION"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
            <xs:element name="type" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="NONE"/>
                        <xs:enumeration value="PHASE FLIPPING ONLY"/>
                        <xs:enumeration value="PHASE FLIPPING AND AMPLITUDE CORRECTION"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="motion_correction_type">
        <xs:annotation>
            <xs:documentation>
                Data items in the EM_MOTION_CORRECTION category record details 
                of corrections made during imaging the sample in the electron microscope.
                This includes information such as the type of motion correction applied, 
                references to related image processing steps, and additional descriptive details.
            </xs:documentation>
        </xs:annotation>
        <xs:sequence>
            <xs:element name="type" minOccurs="1" maxOccurs="1">
                <xs:annotation>
                    <xs:documentation>
                        Type of motion correction carried out.
                    </xs:documentation>
                </xs:annotation>
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="MICROGRAPH PATCHES"/>
                        <xs:enumeration value="NONE"/>
                        <xs:enumeration value="PER PARTICLE"/>
                        <xs:enumeration value="WHOLE MICROGRAPH"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="details" minOccurs="0" maxOccurs="1" type="xs:string">
                <xs:annotation>
                    <xs:documentation>
                        A description of the motion correction operation in more detail.
                    </xs:documentation>
                </xs:annotation>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="correction_space_type">
        <xs:restriction base="xs:string">
            <xs:enumeration value="REAL"/>
            <xs:enumeration value="RECIPROCAL"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="molecular_replacement_type">
        <xs:sequence>
            <xs:element name="starting_model" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="access_code" type="pdb_code_type"/>
                        <xs:element name="chain" type="chain_type" minOccurs="0"
                            maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="resolution_range" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="high_resolution">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="resolution_type">
                                        <xs:attribute name="units" type="xs:token" fixed="Å"
                                            use="required"/>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="low_resolution">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="resolution_type">
                                        <xs:attribute name="units" type="xs:token" fixed="Å"
                                            use="required"/>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="crystallography_statistics_type">
        <xs:sequence>
            <xs:element name="number_intensities_measured" type="xs:positiveInteger"/>
            <xs:element name="number_structure_factors" type="xs:positiveInteger"/>
            <xs:element name="fourier_space_coverage" type="xs:float"/>
            <xs:element name="r_sym" type="xs:float" minOccurs="0"/>
            <xs:element name="r_merge" type="xs:float"/>
            <xs:element name="overall_phase_error" type="xs:token" minOccurs="0"/>
            <xs:element name="overall_phase_residual" type="xs:float" minOccurs="0"/>
            <xs:element name="phase_error_rejection_criteria" type="xs:token"/>
            <xs:element name="high_resolution">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="resolution_type">
                            <xs:attribute name="units" type="xs:token" fixed="Å" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="shell_list" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="shell" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="high_resolution">
                                        <xs:complexType>
                                            <xs:simpleContent>
                                                <xs:extension base="resolution_type">
                                                  <xs:attribute name="units" type="xs:token"
                                                  fixed="Å" use="required"/>
                                                </xs:extension>
                                            </xs:simpleContent>
                                        </xs:complexType>
                                    </xs:element>
                                    <xs:element name="low_resolution">
                                        <xs:complexType>
                                            <xs:simpleContent>
                                                <xs:extension base="resolution_type">
                                                  <xs:attribute name="units" type="xs:token"
                                                  fixed="Å" use="required"/>
                                                </xs:extension>
                                            </xs:simpleContent>
                                        </xs:complexType>
                                    </xs:element>
                                    <xs:element name="number_structure_factors"
                                        type="xs:positiveInteger"/>
                                    <xs:element name="phase_residual" type="xs:float"/>
                                    <xs:element name="fourier_space_coverage" type="xs:float"/>
                                    <xs:element name="multiplicity" type="xs:float"/>
                                </xs:sequence>
                                <xs:attribute name="shell_id" type="xs:positiveInteger"/>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:element name="helical_processing" substitutionGroup="image_processing"
        type="helical_processing_type"/>
    <xs:complexType name="helical_processing_type">
        <xs:complexContent>
            <xs:extension base="base_image_processing_type">
                <xs:group ref="helical_processing_add_group"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:group name="helical_processing_add_group">
        <xs:sequence>
            <xs:element name="final_reconstruction" type="non_subtom_final_reconstruction_type"
                minOccurs="0"/>
            <xs:element name="ctf_correction" type="ctf_correction_type" minOccurs="0"/>
            <xs:element name="motion_correction" type="motion_correction_type" minOccurs="0"/>
            <xs:element name="segment_selection" type="segment_selection_type" minOccurs="0"
                maxOccurs="unbounded"/>
            <xs:element name="refinement" type="refinement_type" minOccurs="0"/>
            <xs:element name="startup_model" type="starting_map_type" minOccurs="0"
                maxOccurs="unbounded"/>
            <xs:element name="helical_layer_lines" type="layer_lines_type" minOccurs="0"/>
            <xs:element name="initial_angle_assignment" type="angle_assignment_type" minOccurs="0"/>
            <xs:element name="final_angle_assignment" type="angle_assignment_type" minOccurs="0"/>
            <xs:element name="crystal_parameters" type="crystal_parameters_type" minOccurs="0"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="segment_selection_type">
        <xs:sequence>
            <xs:element name="number_selected" type="xs:positiveInteger" minOccurs="0"/>
            <xs:element name="segment_length" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="non_zero_float">
                            <xs:attribute name="units" type="xs:token" fixed="Å" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="segment_overlap" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="non_zero_float">
                            <xs:attribute name="units" type="xs:token" fixed="Å" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="total_filament_length" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="non_zero_float">
                            <xs:attribute name="units" type="xs:token" fixed="Å" use="required"/>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="non_zero_float">
        <xs:restriction base="xs:float">
            <xs:minExclusive value="0"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="refinement_type">
        <xs:sequence>
            <xs:element name="startup_model" type="starting_map_type" minOccurs="0"
                maxOccurs="unbounded"/>
            <xs:element name="starting_symmetry" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="helical_parameters" type="helical_parameters_type"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="layer_lines_type">
        <xs:sequence>
            <xs:element name="number_helices"/>
            <xs:element name="helix_length">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="min"/>
                        <xs:element name="max"/>
                        <xs:element name="average"/>
                        <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="straightening" type="xs:boolean" minOccurs="0"/>
            <xs:element name="indexing">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="angle_assignment_type">
        <xs:sequence>
            <xs:element name="type">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="ANGULAR RECONSTITUTION"/>
                        <xs:enumeration value="COMMON LINE"/>
                        <xs:enumeration value="NOT APPLICABLE"/>
                        <xs:enumeration value="OTHER"/>
                        <xs:enumeration value="PROJECTION MATCHING"/>
                        <xs:enumeration value="RANDOM ASSIGNMENT"/>
                        <xs:enumeration value="MAXIMUM LIKELIHOOD"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="projection_matching_processing" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="number_reference_projections" type="xs:positiveInteger"
                            minOccurs="0"/>
                        <xs:element name="merit_function" type="xs:token" minOccurs="0"/>
                        <xs:element name="angular_sampling" minOccurs="0">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="allowed_angular_sampling">
                                        <xs:attribute name="units" type="xs:token" fixed="degrees"
                                            use="required"/>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:simpleType name="allowed_angular_sampling">
        <xs:restriction base="xs:float">
            <xs:minExclusive value="0"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:element name="singleparticle_processing" substitutionGroup="image_processing"
        type="singleparticle_processing_type"/>
    <xs:complexType name="singleparticle_processing_type">
        <xs:complexContent>
            <xs:extension base="base_image_processing_type">
                <xs:group ref="single_particle_proc_add_group"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:group name="single_particle_proc_add_group">
        <xs:sequence>
            <xs:element name="particle_selection" type="particle_selection_type" minOccurs="0"
                maxOccurs="unbounded"/>
            <xs:element name="ctf_correction" type="ctf_correction_type" minOccurs="0"/>
            <xs:element name="motion_correction" type="motion_correction_type" minOccurs="0"/>
            <xs:element name="startup_model" type="starting_map_type" minOccurs="0"
                maxOccurs="unbounded"/>
            <xs:element name="final_reconstruction" type="non_subtom_final_reconstruction_type"
                minOccurs="0"/>
            <xs:element name="initial_angle_assignment" type="angle_assignment_type" minOccurs="0"/>
            <xs:element name="final_angle_assignment" type="angle_assignment_type" minOccurs="0"/>
            <xs:element name="final_multi_reference_alignment" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="number_reference_projections" type="xs:positiveInteger"/>
                        <xs:element name="merit_function" minOccurs="0" type="xs:string"/>
                        <xs:element name="angular_sampling" minOccurs="0">
                            <xs:complexType>
                                <xs:simpleContent>
                                    <xs:extension base="allowed_angular_sampling">
                                        <xs:attribute name="units" type="xs:token" fixed="degrees"
                                            use="required"/>
                                    </xs:extension>
                                </xs:simpleContent>
                            </xs:complexType>
                        </xs:element>
                        <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
                        <xs:element name="details" type="xs:string" minOccurs="0"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="final_two_d_classification" type="classification_type" minOccurs="0"/>
            <xs:element name="final_three_d_classification" type="classification_type" minOccurs="0"
            />
        </xs:sequence>
    </xs:group>
    <xs:complexType name="particle_selection_type">
        <xs:sequence>
            <xs:element name="number_selected" type="xs:positiveInteger" minOccurs="0"/>
            <xs:element name="reference_model" type="xs:token" minOccurs="0"/>
            <xs:element name="method" type="xs:string" minOccurs="0"/>
            <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="classification_type">
        <xs:sequence>
            <xs:element name="number_classes" type="xs:positiveInteger" minOccurs="0"/>
            <xs:element name="average_number_members_per_class" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:float">
                        <xs:minExclusive value="0"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:element name="subtomogram_averaging_processing" substitutionGroup="image_processing"
        type="subtomogram_averaging_processing_type"/>
    <xs:complexType name="subtomogram_averaging_processing_type">
        <xs:complexContent>
            <xs:extension base="base_image_processing_type">
                <xs:group ref="subtomogram_averaging_proc_add_group"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:group name="subtomogram_averaging_proc_add_group">
        <xs:sequence>
            <xs:element name="final_reconstruction" type="subtomogram_final_reconstruction_type"
                minOccurs="0"/>
            <xs:element name="extraction">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="number_tomograms" type="xs:positiveInteger"/>
                        <xs:element name="number_images_used" type="xs:positiveInteger"/>
                        <xs:element name="reference_model" type="xs:token" minOccurs="0"/>
                        <xs:element name="method" type="xs:string" minOccurs="0"/>
                        <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
                        <xs:element name="details" type="xs:string" minOccurs="0"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="ctf_correction" type="ctf_correction_type" minOccurs="0"/>
            <xs:element name="motion_correction" type="motion_correction_type" minOccurs="0"/>
            <xs:element name="final_multi_reference_alignment" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="number_reference_projections" type="xs:positiveInteger"/>
                        <xs:element name="merit_function" minOccurs="0" type="xs:string"/>
                        <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
                        <xs:element name="details" type="xs:string" minOccurs="0"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="final_three_d_classification" type="classification_type" minOccurs="0"/>
            <xs:element name="final_angle_assignment" type="angle_assignment_type" minOccurs="0"/>
            <xs:element name="crystal_parameters" type="crystal_parameters_type" minOccurs="0"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="subtomogram_final_reconstruction_type">
        <xs:complexContent>
            <xs:extension base="final_reconstruction_type">
                <xs:sequence>
                    <xs:element name="number_subtomograms_used" type="xs:positiveInteger"
                        minOccurs="0"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:complexType name="final_reconstruction_type">
        <xs:sequence>
            <xs:element name="number_classes_used" type="xs:positiveInteger" minOccurs="0"/>
            <xs:element name="applied_symmetry" type="applied_symmetry_type" minOccurs="0"/>
            <xs:element name="algorithm" type="reconstruction_algorithm_type" minOccurs="0"/>
            <xs:element name="resolution" minOccurs="0">
                <xs:complexType>
                    <xs:simpleContent>
                        <xs:extension base="resolution_type">
                            <xs:attribute name="units" type="xs:token" fixed="Å" use="required"/>
                            <xs:attribute name="res_type" use="required">
                                <xs:simpleType>
                                    <xs:restriction base="xs:token">
                                        <xs:enumeration value="BY AUTHOR"/>
                                    </xs:restriction>
                                </xs:simpleType>
                            </xs:attribute>
                        </xs:extension>
                    </xs:simpleContent>
                </xs:complexType>
            </xs:element>
            <xs:element name="resolution_method" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:enumeration value="DIFFRACTION PATTERN/LAYERLINES"/>
                        <xs:enumeration value="FSC 0.143 CUT-OFF"/>
                        <xs:enumeration value="FSC 0.33 CUT-OFF"/>
                        <xs:enumeration value="FSC 0.5 CUT-OFF"/>
                        <xs:enumeration value="FSC 1/2 BIT CUT-OFF"/>
                        <xs:enumeration value="FSC 3 SIGMA CUT-OFF"/>
                        <xs:enumeration value="OTHER"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="reconstruction_filtering" type="reconstruction_filtering_type"
                minOccurs="0"/>
            <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:element name="tomography_processing" substitutionGroup="image_processing"
        type="tomography_processing_type"/>
    <xs:complexType name="tomography_processing_type">
        <xs:complexContent>
            <xs:extension base="base_image_processing_type">
                <xs:group ref="tomography_proc_add_group"/>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:group name="tomography_proc_add_group">
        <xs:sequence>
            <xs:element name="final_reconstruction" type="non_subtom_final_reconstruction_type"
                minOccurs="0"/>
            <xs:element name="series_aligment_software_list" type="software_list_type" minOccurs="0"/>
            <xs:element name="ctf_correction" type="ctf_correction_type" minOccurs="0"/>
            <xs:element name="motion_correction" type="motion_correction_type" minOccurs="0"/>
            <xs:element name="crystal_parameters" type="crystal_parameters_type" minOccurs="0"/>
        </xs:sequence>
    </xs:group>
    <xs:complexType name="map_type">
        <xs:sequence>
            <xs:element name="file">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:pattern value="emd_\d{4,}([A-Za-z0-9_]*)\.map(\.gz|)"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="symmetry" type="applied_symmetry_type" minOccurs="0"/>
            <xs:element name="data_type" type="map_data_type"/>
            <xs:element name="dimensions" type="integer_vector_map_type"/>
            <xs:element name="origin">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="col" type="xs:integer"/>
                        <xs:element name="row" type="xs:integer"/>
                        <xs:element name="sec" type="xs:integer"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="spacing">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="x" type="xs:positiveInteger"/>
                        <xs:element name="y" type="xs:nonNegativeInteger"/>
                        <xs:element name="z" type="xs:nonNegativeInteger"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="cell">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="a" type="cell_type"/>
                        <xs:element name="b" type="cell_type"/>
                        <xs:element name="c" type="cell_type"/>
                        <xs:element name="alpha" type="cell_angle_type"/>
                        <xs:element name="beta" type="cell_angle_type"/>
                        <xs:element name="gamma" type="cell_angle_type"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="axis_order">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="fast">
                            <xs:simpleType>
                                <xs:restriction base="xs:token">
                                    <xs:pattern value="X|Y|Z"/>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>
                        <xs:element name="medium">
                            <xs:simpleType>
                                <xs:restriction base="xs:token">
                                    <xs:pattern value="X|Y|Z"/>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>
                        <xs:element name="slow">
                            <xs:simpleType>
                                <xs:restriction base="xs:token">
                                    <xs:pattern value="X|Y|Z"/>
                                </xs:restriction>
                            </xs:simpleType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="statistics" type="map_statistics_type" minOccurs="0"/>
            <xs:element name="pixel_spacing">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="x" type="pixel_spacing_type"/>
                        <xs:element name="y" type="pixel_spacing_type"/>
                        <xs:element name="z" type="pixel_spacing_type"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="contour_list" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="contour" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="level" type="xs:float" minOccurs="0"/>
                                    <xs:element name="source" minOccurs="0">
                                        <xs:simpleType>
                                            <xs:restriction base="xs:token">
                                                <xs:enumeration value="EMDB"/>
                                                <xs:enumeration value="AUTHOR"/>
                                                <xs:enumeration value="SOFTWARE"/>
                                                <xs:enumeration value="ANNOTATOR"/>
                                            </xs:restriction>
                                        </xs:simpleType>
                                    </xs:element>
                                </xs:sequence>
                                <xs:attribute name="primary" type="xs:boolean" use="required"/>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="label" type="xs:token" minOccurs="0"/>
            <xs:element name="annotation_details" type="xs:string" minOccurs="0"/>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
        <xs:attribute name="format" fixed="CCP4" use="required"/>
        <xs:attribute name="size_kbytes" type="xs:positiveInteger" use="required"/>
    </xs:complexType>
    <xs:simpleType name="map_data_type">
        <xs:restriction base="xs:string">
            <xs:enumeration value="IMAGE STORED AS SIGNED BYTE"/>
            <xs:enumeration value="IMAGE STORED AS SIGNED INTEGER (2 BYTES)"/>
            <xs:enumeration value="IMAGE STORED AS FLOATING POINT NUMBER (4 BYTES)"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="integer_vector_map_type">
        <xs:sequence>
            <xs:element name="col" type="xs:positiveInteger"/>
            <xs:element name="row" type="xs:positiveInteger"/>
            <xs:element name="sec" type="xs:positiveInteger"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="map_statistics_type">
        <xs:sequence>
            <xs:element name="minimum" type="xs:float"/>
            <xs:element name="maximum" type="xs:float"/>
            <xs:element name="average" type="xs:float"/>
            <xs:element name="std" type="xs:float"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="pixel_spacing_type">
        <xs:simpleContent>
            <xs:extension base="allowed_pixel_sampling">
                <xs:attribute name="units" type="xs:token" fixed="Å" use="required"/>
            </xs:extension>
        </xs:simpleContent>
    </xs:complexType>
    <xs:simpleType name="allowed_pixel_sampling">
        <xs:restriction base="xs:float">
            <xs:minExclusive value="0"/>
        </xs:restriction>
    </xs:simpleType>
    <xs:complexType name="interpretation_type">
        <xs:sequence>
            <xs:element name="modelling_list" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="modelling" type="modelling_type" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="figure_list" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="figure" type="figure_type" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="segmentation_list" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="segmentation" maxOccurs="unbounded">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="file">
                                        <xs:simpleType>
                                            <xs:restriction base="xs:token">
                                                <xs:pattern value="[emd_\d{4,}]+.*"/>
                                            </xs:restriction>
                                        </xs:simpleType>
                                    </xs:element>
                                    <xs:element name="details" type="xs:string" minOccurs="0"/>
                                    <xs:element name="mask_details" type="map_type" minOccurs="0"/>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="slices_list" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="slice" type="map_type" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="additional_map_list" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="additional_map" type="map_type" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="half_map_list" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="half_map" type="map_type" maxOccurs="unbounded"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <!-- 
            <xs:element name="reference_map_for_composition" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="ref_map" minOccurs="0" type="map_type"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            -->
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="modelling_type">
        <xs:sequence>
            <xs:element name="initial_model" minOccurs="0" maxOccurs="unbounded">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="access_code" type="xs:token" minOccurs="0"> </xs:element>
                        <xs:element minOccurs="0" name="chain">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element minOccurs="0" name="chain_id" type="xs:token"/>
                                    <xs:element minOccurs="0" name="residue_range">
                                        <xs:simpleType>
                                            <xs:restriction base="xs:token">
                                                <xs:pattern value="[+-]?[0-9]+-[+-]?[0-9]+"/>
                                            </xs:restriction>
                                        </xs:simpleType>
                                    </xs:element>
                                    <xs:element minOccurs="0" name="number_of_copies_in_final_model"
                                        type="xs:positiveInteger"/>
                                    <xs:element maxOccurs="1" minOccurs="0" name="source_name">
                                        <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                                <xs:enumeration value="PDB"/>
                                                <xs:enumeration value="AlphaFold"/>
                                                <xs:enumeration value="ITasser"/>
                                                <xs:enumeration value="ModelArchive"/>
                                                <xs:enumeration value="Modeller"/>
                                                <xs:enumeration value="RoseTTAFold"/>
                                                <xs:enumeration value="SwissModel"/>
                                                <xs:enumeration value="Other"/>
                                            </xs:restriction>
                                        </xs:simpleType>
                                    </xs:element>
                                    <xs:element maxOccurs="1" minOccurs="0"
                                        name="initial_model_type">
                                        <xs:simpleType>
                                            <xs:restriction base="xs:string">
                                                <xs:enumeration value="experimental model"/>
                                                <xs:enumeration value="in silico model"/>
                                                <xs:enumeration value="integrative model"/>
                                                <xs:enumeration value="other"/>
                                            </xs:restriction>
                                        </xs:simpleType>
                                    </xs:element>
                                </xs:sequence>
                            </xs:complexType>
                        </xs:element>
                        <xs:element minOccurs="0" name="details" type="xs:string"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="final_model" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="access_code" type="pdb_code_type"/>
                        <xs:element name="chain" type="chain_type" minOccurs="0"
                            maxOccurs="unbounded"/>
                        <xs:element name="details" type="xs:string" minOccurs="0"/>
                    </xs:sequence>
                </xs:complexType>
            </xs:element>
            <xs:element name="refinement_protocol" minOccurs="0">
                <xs:simpleType>
                    <xs:restriction base="xs:string">
                        <xs:enumeration value="AB INITIO MODEL"/>
                        <xs:enumeration value="BACKBONE TRACE"/>
                        <xs:enumeration value="FLEXIBLE FIT"/>
                        <xs:enumeration value="OTHER"/>
                        <xs:enumeration value="RIGID BODY FIT"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="software_list" type="software_list_type" minOccurs="0"/>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
            <xs:element name="target_criteria" type="xs:token" minOccurs="0"/>
            <xs:element name="refinement_space" type="xs:token" minOccurs="0"/>
            <xs:element name="overall_bvalue" type="xs:float" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:complexType name="figure_type">
        <xs:sequence>
            <xs:element name="file">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:pattern value="emd_\d{4,}.+"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:element name="validation_method" type="validation_type" abstract="true"/>
    <xs:complexType name="validation_type">
        <xs:sequence>
            <xs:element name="file">
                <xs:simpleType>
                    <xs:restriction base="xs:token">
                        <xs:pattern value="emd_\d{4,}_fsc(_[1-9]{1,})*.xml"/>
                    </xs:restriction>
                </xs:simpleType>
            </xs:element>
            <xs:element name="details" type="xs:string" minOccurs="0"/>
        </xs:sequence>
    </xs:complexType>
    <xs:element name="crystallography_validation" substitutionGroup="validation_method"
        type="crystallography_validation_type"/>
    <xs:complexType name="crystallography_validation_type">
        <xs:complexContent>
            <xs:extension base="validation_type">
                <xs:sequence>
                    <xs:element name="parallel_resolution"/>
                    <xs:element name="perpendicular_resolution"/>
                    <xs:element name="number_observed_reflections"/>
                    <xs:element name="number_unique_reflections"/>
                    <xs:element name="weighted_phase_residual"/>
                    <xs:element name="weighted_r_factor"/>
                    <xs:element name="data_completeness"/>
                </xs:sequence>
            </xs:extension>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="fsc_curve" substitutionGroup="validation_method"
        type="fsc_curve_validation_type"/>
    <xs:complexType name="fsc_curve_validation_type">
        <xs:complexContent>
            <xs:extension base="validation_type"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="layer_lines" substitutionGroup="validation_method"
        type="layer_lines_validation_type"/>
    <xs:complexType name="layer_lines_validation_type">
        <xs:complexContent>
            <xs:extension base="validation_type"/>
        </xs:complexContent>
    </xs:complexType>
    <xs:element name="structure_factors" substitutionGroup="validation_method"
        type="structure_factors_validation_type"/>
    <xs:complexType name="structure_factors_validation_type">
        <xs:complexContent>
            <xs:extension base="validation_type"/>
        </xs:complexContent>
    </xs:complexType>
</xs:schema>
