<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: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" minOccurs="0" />
            <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: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" minOccurs="0" />
                <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" minOccurs="0">
                <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" minOccurs="0" />
            <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" minOccurs="0" />
            <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:enumeration value="OTHER" /></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" minOccurs="0" />
            <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" minOccurs="0">
                        <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" minOccurs="0">
                        <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" minOccurs="0">
                        <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" minOccurs="0">
                <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" minOccurs="0" />
                        <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" minOccurs="0">
                <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:enumeration value="ETHANE-PROPANE MIXTURE" /><xs:enumeration value="NONE" /></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:enumeration value="OTHER" /></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" minOccurs="0" />
                                    <xs:element name="electron_beam_tilt_params" type="xs:string" minOccurs="0" />
                                </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" minOccurs="0">
                <xs:complexType>
                    <xs:sequence maxOccurs="unbounded">
                        <xs:element name="image_recording">
                            <xs:complexType>
                                <xs:sequence>
                                    <xs:element name="film_or_detector_model" minOccurs="0">
                                        <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" minOccurs="0">
                        <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" minOccurs="0" />
            <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" minOccurs="0">
                <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" minOccurs="0">
                <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" minOccurs="0">
                <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:enumeration value="OTHER" /></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" minOccurs="0" />
            <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" minOccurs="0" />
            <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" minOccurs="0">
                <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" minOccurs="0">
                <xs:complexType>
                    <xs:sequence>
                        <xs:element name="number_tomograms" type="xs:positiveInteger" minOccurs="0" />
                        <xs:element name="number_images_used" 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: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">
                        <!--b'<xs:pattern xmlns:xs="http://www.w3.org/2001/XMLSchema" value="emd_\\d{4,}([A-Za-z0-9_]*)\\.map(\\.gz|)" />\n                    '--></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: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>