<?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.10.0"/>
        <!-- <xs:attribute name="composite_structure" type="xs:boolean"/> -->
    </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="EXPERIMENTAL_DATA"/>
                        <xs:enumeration value="DERIVED_DATA"/>
                        <xs:enumeration value="EXPERIMENTAL_SUMMARY"/>
                        <xs:enumeration value="EXPERIMENTAL_PREPARATION"/>
                        <xs:enumeration value="DATABASE_REFERENCES"/>
                        <xs:enumeration value="DATA_COLLECTION"/>
                        <xs:enumeration value="ADVISORY"/>
                        <xs:enumeration value="SOURCE_AND_TAXONOMY"/>
                        <xs:enumeration value="REFINEMENT_DESCRIPTION"/>
                        <xs:enumeration value="DATA_PROCESSING"/>
                        <xs:enumeration value="STRUCTURE_SUMMARY"/>
                        <xs:enumeration value="VERSION_FORMAT_COMPLIANCE"/>
                        <xs:enumeration value="OTHER"/>
                    </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: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: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: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: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="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="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="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: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="\d+-\d+"/>
                    </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: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="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="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="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="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="\d+-\d+"/>
                                            </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>
