<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
  <xs:element name="CCP4MG_Status">
    <xs:complexType>
        <xs:sequence>
         <xs:choice minOccurs="0" maxOccurs="unbounded">
          <xs:element name="View" type="tView"/>
          <xs:element name="Colours" type="tColours"/>
          <xs:element name="MolData" type="tMolData"/>
          <xs:element name="MapData" type="tMapData"/>
          <xs:element name="VectorsData" type="tVectorsData"/>
          <xs:element name="ColourSchemeManager" type="tColourSchemeManager"/>
          <xs:element name="stereo_prefs" type="tStereoPrefs"/>
          <xs:element name="model_drawing_style" type="tModelDrawingStyle"/>
          <xs:element name="HBond_drawing_style" type="tHBondDrawingStyle"/>
          <xs:element name="Contacts_param" type="tContactsParams"/>
          <xs:element name="atom_label_params" type="tAtomLabelParams"/>
          <xs:element name="HBond_param" type="tHBondPrams"/>
          <xs:element name="surface_drawing_style" type="tSurfaceDrawingStyle"/>
          <xs:element name="MapDispParamsManager" type="tMapDispParamsManager"/>
          <xs:element name="ParamsManager" type="tParamsManager"/>
          <xs:element name="gui_params" type="tGUIParams"/>
          <xs:element name="light_params" type="tLightParams"/>
          <xs:element name="SVGImage" type="tImage"/>
          <xs:element name="Image" type="tImage"/>
          <xs:element name="Legend" type="tLegend"/>
          <xs:element name="Crystal" type="tCrystal"/>
          <xs:element name="Geometry" type="tGeometry"/>
          <xs:element name="SequenceAlignment" type="tSequenceAlignment"/>
         </xs:choice>
        </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="tMatrix4x4">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="element" type="xs:float"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tGeometryAtom">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="dataobj" type="xs:string"/>
      <xs:element name="atom" type="xs:string"/>
      <xs:element name="matrix" type="tMatrix4x4"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tSequenceRecord">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    </xs:choice>
      <xs:element name="seqtype" type="xs:string"/>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="seq" type="xs:string"/>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tGeometryAtomGroup">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="GeometryAtom" type="tGeometryAtom"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tSequenceAlignment">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="SequenceRecord" type="tSequenceRecord"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tGeometry">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="GeometryAtomGroup" type="tGeometryAtomGroup"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tCrystalModels">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="crystal_model" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tCrystal">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="7">
      <xs:element name="source" type="xs:string"/>
      <xs:element name="style" type="xs:string"/>
      <xs:element name="atom_symm_radius" type="xs:float"/>
      <xs:element name="symmetry_labels" type="xs:boolean"/>
      <xs:element name="cell_edges" type="xs:boolean"/>
      <xs:element name="models_in_crystal" type="tCrystalModels"/>
      <xs:element name="symm_diff_colour" type="xs:boolean"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tLegend">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="opacity" type="xs:float"/>
      <xs:element name="legend_visible" type="xs:boolean"/>
      <xs:element name="position" type="tCartesian2D"/>
      <xs:element name="selection" type="xs:string"/>
      <xs:element name="customSelectionName" type="xs:string"/>
      <xs:element name="display_class" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tImage">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="filename" type="tFilename"/>
      <xs:element name="opacity" type="xs:float"/>
      <xs:element name="scale" type="xs:float"/>
      <xs:element name="aspect" type="xs:float"/>
      <xs:element name="legend_visible" type="xs:boolean"/>
      <xs:element name="position" type="tCartesian2D"/>
      <xs:element name="customSelectionName" type="xs:string"/>
      <xs:element name="display_class" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tAtomLabelParams">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="4">
      <xs:element name="name" type="xs:string"/>
      <xs:element name="truncate_mol_name" type="xs:boolean"/>
      <xs:element name="label_style" type="tLabelStyle"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tColourNoName">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="4">
      <xs:element name="red" type="xs:float"/>
      <xs:element name="green" type="xs:float"/>
      <xs:element name="blue" type="xs:float"/>
      <xs:element name="alpha" type="xs:float"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tLight">
   <xs:sequence>
    <xs:choice minOccurs="4" maxOccurs="5">
    <xs:element name="position" type="tCartesian"/>
    <xs:element name="specular" type="tColourNoName"/>
    <xs:element name="ambient" type="tColourNoName"/>
    <xs:element name="diffuse" type="tColourNoName"/>
    <xs:element name="on" type="xs:boolean"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tLights">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="light" type="tLight"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tLightParams">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="3">
    <xs:element name="name" type="xs:string"/>
    <xs:element name="nLights" type="xs:int"/>
    <xs:element name="lights" type="tLights"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tBackGroundColour">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="3">
    <xs:element name="red" type="xs:float"/>
    <xs:element name="green" type="xs:float"/>
    <xs:element name="blue" type="xs:float"/>
    <xs:element name="red_i" type="xs:int"/>
    <xs:element name="green_i" type="xs:int"/>
    <xs:element name="blue_i" type="xs:int"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tGUIParams">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="name" type="xs:string"/>
    <xs:element name="show_axes" type="xs:boolean"/>
    <xs:element name="show_scale" type="xs:boolean"/>
    <xs:element name="background_colour" type="tBackGroundColour"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tParamsManager">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="name" type="xs:string"/>
    <xs:element name="bond_width" type="xs:float"/>
    <xs:element name="fat_bond_width" type="xs:float"/>
    <xs:element name="thin_bond_width" type="xs:float"/>
    <xs:element name="cylinder_width" type="xs:float"/>
    <xs:element name="nucleic_stick_width" type="xs:float"/>
    <xs:element name="ballstick_stick" type="xs:float"/>
    <xs:element name="ribbon_width" type="xs:float"/>
    <xs:element name="alpha_helix_width" type="xs:float"/>
    <xs:element name="helix_tube_diameter" type="xs:float"/>
    <xs:element name="arrow_width" type="xs:float"/>
    <xs:element name="arrow_length" type="xs:float"/>
    <xs:element name="worm_width" type="xs:float"/>
    <xs:element name="loop_frac" type="xs:float"/>
    <xs:element name="sphere_radii_scale" type="xs:float"/>
    <xs:element name="ball_radii_scale" type="xs:float"/>
    <xs:element name="dashed_bond_length" type="xs:float"/>
    <xs:element name="pyramid_size" type="xs:float"/>
    <xs:element name="anisou_scale" type="xs:float"/>
    <xs:element name="trace_cutoff" type="xs:float"/>
    <xs:element name="base_block_thickness" type="xs:float"/>
    <xs:element name="two_colour_ribbon" type="xs:boolean"/>
    <xs:element name="grey_ribbon_edge" type="xs:boolean"/>
    <xs:element name="flatten_loop" type="xs:boolean"/>
    <xs:element name="flatten_beta"  type="xs:boolean"/>
    <xs:element name="anisou_scale_byvdw"  type="xs:boolean"/>
    <xs:element name="spline_beta_flat" type="xs:boolean"/>
    <xs:element name="dashed_bonds" type="xs:boolean"/>
    <xs:element name="show_multiple_bonds" type="xs:boolean"/>
    <xs:element name="deloc_ring" type="xs:boolean"/>
    <xs:element name="ribbon_style" type="xs:int"/>
    <xs:element name="helix_style"  type="xs:int"/>
    <xs:element name="anisou_style" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tMapDispParamsManager">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="name" type="xs:string"/>
    <xs:element name="first_colour" type="xs:string"/>
    <xs:element name="other_colour" type="xs:string"/>
    <xs:element name="surface_style" type="xs:string"/>
    <xs:element name="contour_scale" type="xs:string"/>
    <xs:element name="line_width" type="xs:float"/>
    <xs:element name="contour_sigma_max" type="xs:float"/>
    <xs:element name="cylinder_width" type="xs:float"/>
    <xs:element name="dot_size" type="xs:float"/>
    <xs:element name="dot_spacing" type="xs:float"/>
    <xs:element name="sampling_rate" type="xs:float"/>
    <xs:element name="radius" type="xs:float"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tSurfaceDrawingStyle">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="name" type="xs:string"/>
    <xs:element name="inside_colour" type="xs:string"/>
    <xs:element name="inside_shiny" type="xs:boolean"/>
    <xs:element name="double_side" type="xs:boolean"/>
    <xs:element name="line_width" type="xs:float"/>
    <xs:element name="probe_radius" type="xs:float"/>
    <xs:element name="resolution_delta" type="xs:float"/>
    <xs:element name="dot_spacing" type="xs:float"/>
    <xs:element name="blend_edges" type="xs:float"/>
    <xs:element name="dot_size" type="xs:float"/>
    <xs:element name="context_cutoff" type="xs:float"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tHBondPrams">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="name" type="xs:string"/>
    <xs:element name="min_D_A" type="xs:float"/>
    <xs:element name="max_D_A" type="xs:float"/>
    <xs:element name="max_H_A" type="xs:float"/>
    <xs:element name="max_D_A_S" type="xs:float"/>
    <xs:element name="min_DD_D_A" type="xs:float"/>
    <xs:element name="min_D_A_AA" type="xs:float"/>
    <xs:element name="min_H_A_AA" type="xs:float"/>
    <xs:element name="min_D_H_A" type="xs:float"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tHBondDrawingStyle">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="name" type="xs:string"/>
    <xs:element name="line_style" type="xs:string"/>
    <xs:element name="line_width" type="xs:float"/>
    <xs:element name="label_mode" type="xs:int"/>
    <xs:element name="contacts_line_style" type="xs:string"/>
    <xs:element name="contacts_line_width" type="xs:float"/>
    <xs:element name="contacts_label_mode" type="xs:int"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tModelDrawingStyle">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="name" type="xs:string"/>
    <xs:element name="anisou_style" type="xs:string"/>
    <xs:element name="helix_style" type="xs:int"/>
    <xs:element name="ribbon_style" type="xs:int"/>
    <xs:element name="dashed_bonds" type="xs:boolean"/>
    <xs:element name="flatten_loop" type="xs:boolean"/>
    <xs:element name="two_colour_ribbon" type="xs:boolean"/>
    <xs:element name="flatten_beta" type="xs:boolean"/>
    <xs:element name="anisou_scale_byvdw" type="xs:boolean"/>
    <xs:element name="bond_width" type="xs:float"/>
    <xs:element name="thin_bond_width" type="xs:float"/>
    <xs:element name="fat_bond_width" type="xs:float"/>
    <xs:element name="worm_width" type="xs:float"/>
    <xs:element name="alpha_helix_width" type="xs:float"/>
    <xs:element name="dashed_bond_length" type="xs:float"/>
    <xs:element name="ballstick_stick" type="xs:float"/>
    <xs:element name="cylinder_width" type="xs:float"/>
    <xs:element name="helix_tube_diameter" type="xs:float"/>
    <xs:element name="sphere_radii_scale" type="xs:float"/>
    <xs:element name="base_block_thickness" type="xs:float"/>
    <xs:element name="ball_radii_scale" type="xs:float"/>
    <xs:element name="anisou_scale" type="xs:float"/>
    <xs:element name="ribbon_width" type="xs:float"/>
    <xs:element name="nucleic_stick_width" type="xs:float"/>
    <xs:element name="arrow_width" type="xs:float"/>
    <xs:element name="trace_cutoff" type="xs:float"/>
    <xs:element name="grey_ribbon_edge" type="xs:boolean"/>
    <xs:element name="show_multiple_bonds" type="xs:boolean"/>
    <xs:element name="deloc_ring" type="xs:boolean"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tStereoPrefs">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="name" type="xs:string"/>
    <xs:element name="stereo_mode" type="xs:int"/>
    <xs:element name="shear_sep" type="xs:float"/>
    <xs:element name="rot_sep" type="xs:float"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tColourSchemeColourList">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="colour" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tColourSchemeRangeList">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="range" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tColourSchemeManager">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="5">
    <xs:element name="name" type="xs:string"/>
    <xs:element name="colour_wheel_direction" type="xs:string"/>
    <xs:element name="interpolate_mode" type="xs:string"/>
    <xs:element name="colours" type="tColourSchemeColourList"/>
    <xs:element name="ranges" type="tColourSchemeRangeList"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tSymmetryColours">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="mateColour" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tSymmetryVisible">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="mateVisible" type="xs:boolean"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tMolDispObjects">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="symmetryMolDispObject" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tMate">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="4">
    <xs:element name="nsym" type="xs:int"/>
    <xs:element name="i" type="xs:int"/>
    <xs:element name="j" type="xs:int"/>
    <xs:element name="k" type="xs:int"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tSymmetryMates">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="mate" type="tMate"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tModelSymmetry">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="symmetry_visible" type="tSymmetryVisible"/>
    <xs:element name="symmetry_colours" type="tSymmetryColours"/>
    <xs:element name="MolDisp_selection" type="xs:string"/>
    <xs:element name="symmetry_MolDisp_objects" type="tMolDispObjects"/>
    <xs:element name="MolDisp_visible" type="xs:boolean"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tFilename">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="3">
    <xs:element name="filetype" type="xs:string"/>
    <xs:element name="shortPath" type="xs:string"/>
    <xs:element name="fullPath" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tLabelStyle">
   <xs:sequence>
    <xs:choice minOccurs="15" maxOccurs="15">
    <xs:element name="label_style_entry" type="xs:boolean"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <!-- FIXME label_user_selparams is almost certainly wrong -->
  <xs:complexType name="tlabelParams">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="label_style" type="tLabelStyle"/>
    <xs:element name="label_user_oneperres" type="xs:boolean"/>
    <xs:element name="label_colour" type="xs:string"/>
    <xs:element name="label_user_selparams" type="xs:string"/>
    <xs:element name="label_select" type="xs:string"/>
    <xs:element name="truncate_mol_name" type="xs:boolean"/>
    <xs:element name="truncate_mol_name_length" type="xs:int"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tNMRModels">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="model" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tChains">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="chain" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tResidues">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="residue" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tProperty">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="prop" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tPropertyVal">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="value" type="xs:float"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tPropertyOp">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="op" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tSecStr">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="structure" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tAltLoc">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="location" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tRanges">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="range" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tElements">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="element" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tSites">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="site" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tMonomers">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="monomer" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tSelectionParameters">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="ranges_qualifier" type="xs:string"/>
    <xs:element name="features" type="xs:string"/>
    <xs:element name="buried_sel" type="xs:string"/>
    <xs:element name="property_join" type="xs:string"/>
    <xs:element name="select" type="xs:string"/>
    <xs:element name="ranges_neighb_model" type="xs:string"/>
    <xs:element name="ranges_neighb_qualifier" type="xs:string"/>
    <xs:element name="buried_mol" type="xs:string"/>
    <xs:element name="neighb_mol" type="xs:string"/>
    <xs:element name="neighb_sel" type="xs:string"/>
    <xs:element name="cid" type="xs:string"/>
    <xs:element name="neighb_selobj" type="xs:string"/>
    <xs:element name="neighb_group" type="xs:string"/>
    <xs:element name="buried_and_selection" type="xs:string"/>
    <xs:element name="contact_mol" type="xs:string"/>
    <xs:element name="contact_sel" type="xs:string"/>
    <xs:element name="as_MolDisp" type="xs:string"/>
    <xs:element name="buried_group" type="xs:string"/>
    <xs:element name="user_sel" type="xs:string"/>
    <xs:element name="ranges_neighb_selection" type="xs:string"/>
    <xs:element name="selection_scheme" type="xs:string"/>
    <xs:element name="user_alias" type="xs:string"/>
    <xs:element name="atomtype" type="xs:string"/>
    <xs:element name="property_join" type="xs:string"/>
    <xs:element name="symid" type="xs:string"/>

    <xs:element name="ranges_extend" type="xs:boolean"/>
    <xs:element name="neighb_excl_solvent" type="xs:boolean"/>
    <xs:element name="neighb_hb" type="xs:boolean"/>
    <xs:element name="neighb_sym" type="xs:boolean"/>
    <xs:element name="nothydrogen" type="xs:boolean"/>
    <xs:element name="neighb_excl_monomer" type="xs:boolean"/>
    <xs:element name="ranges_neighb_invert" type="xs:boolean"/>
    <xs:element name="neighb_excl" type="xs:boolean"/>
    <xs:element name="ranges_invert" type="xs:boolean"/>

    <xs:element name="ranges_neighb_cutoff" type="xs:float"/>
    <xs:element name="neighb_rad" type="xs:float"/>

    <xs:element name="nmr_models" type="tNMRModels"/>
    <xs:element name="chains" type="tChains"/>
    <xs:element name="elementtypes" type="tElements"/>
    <xs:element name="restypes" type="tResidues"/>
    <xs:element name="property" type="tProperty"/>
    <xs:element name="property_lt_value" type="tPropertyVal"/>
    <xs:element name="property_gt_value" type="tPropertyVal"/>
    <xs:element name="property_lt_op" type="tPropertyOp"/>
    <xs:element name="property_gt_op" type="tPropertyOp"/>
    <xs:element name="secstr" type="tSecStr"/>
    <xs:element name="alt_locs" type="tAltLoc"/>
    <xs:element name="ranges" type="tRanges"/>
    <xs:element name="sites" type="tSites"/>
    <xs:element name="monomers" type="tMonomers"/>
    <xs:element name="use_all_models" type="xs:boolean"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tStyleParameters">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="style_mode" type="xs:string"/>
    <xs:element name="inter_dispobj_bond" type="xs:boolean"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tColourUserScheme">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="scheme" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tColourRule">
   <xs:sequence>
    <xs:choice minOccurs="2" maxOccurs="2">
    <xs:element name="colour_name" type="xs:string"/>
    <xs:element name="rule" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tColourRules">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="colour_rule_definition" type="tColourRule"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tColourParameters">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="colour" type="xs:string"/>
    <xs:element name="colour_mode" type="xs:string"/>
    <xs:element name="colour_legend" type="xs:string"/>
    <xs:element name="interface_selection" type="xs:string"/>
    <xs:element name="interface_MolData_name" type="xs:string"/>
    <xs:element name="interface_style" type="xs:string"/>
    <xs:element name="stick_colour" type="xs:string"/>
    <xs:element name="non_C_atomtype" type="xs:string"/>
    <xs:element name="one_colour" type="xs:string"/>
    <xs:element name="user_scheme" type="tColourUserScheme"/>
    <xs:element name="colour_rules" type="tColourRules"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tSurfaceDispobj">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="opacity" type="xs:float"/>
    <xs:element name="legend_visible" type="xs:boolean"/>
    <xs:element name="visible" type="xs:boolean"/>
    <xs:element name="surface_style" type="xs:string"/>
    <xs:element name="surface_type" type="xs:string"/>
    <xs:element name="drawing_style" type="xs:string"/>
    <xs:element name="selection_parameters" type="tSelectionParameters"/>
    <xs:element name="style_parameters" type="tSelectionParameters"/>
    <xs:element name="colour_parameters" type="tColourParameters"/>
    <xs:element name="customSelectionName" type="xs:string"/>
    <xs:element name="display_class" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tContactsParams">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="name" type="xs:string"/>
    <xs:element name="test_VDW_radius" type="xs:boolean"/>
    <xs:element name="label_VDW_radius" type="xs:boolean"/>
    <xs:element name="exclude_hbondable" type="xs:boolean"/>
    <xs:element name="test_metal_coord_distance" type="xs:boolean"/>
    <xs:element name="simple_min_cutoff" type="xs:float"/>
    <xs:element name="simple_max_cutoff" type="xs:float"/>
    <xs:element name="VDW_fraction_min" type="xs:float"/>
    <xs:element name="VDW_fraction_max" type="xs:float"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tHBonds">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="opacity" type="xs:float"/>
    <xs:element name="legend_visible" type="xs:boolean"/>
    <xs:element name="visible" type="xs:boolean"/>
    <xs:element name="contact_MolDisp" type="xs:string"/>
    <xs:element name="drawing_style" type="xs:string"/>
    <xs:element name="label_params" type="tlabelParams"/>
    <xs:element name="selection_parameters" type="tSelectionParameters"/>
    <xs:element name="style_parameters" type="tSelectionParameters"/>
    <xs:element name="colour_parameters" type="tColourParameters"/>
    <xs:element name="customSelectionName" type="xs:string"/>
    <xs:element name="display_class" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tAnnotation">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="customSelectionName" type="xs:string"/>
    <xs:element name="opacity" type="xs:float"/>
    <xs:element name="legend_visible" type="xs:boolean"/>
    <xs:element name="visible" type="xs:boolean"/>
    <xs:element name="centered" type="xs:boolean"/>
    <xs:element name="text" type="xs:string"/>
    <xs:element name="atom_position" type="xs:string"/>
    <xs:element name="position" type="tCartesian"/>
    <xs:element name="display_class" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tSelectionScheme">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="name" type="xs:string"/>
    <xs:element name="selection" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tMolDisp">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
    <xs:element name="opacity" type="xs:float"/>
    <xs:element name="doSymmetry" type="xs:boolean"/>
    <xs:element name="doBiomolecule" type="xs:boolean"/>
    <xs:element name="doCentralSymmetry" type="xs:boolean"/>
    <xs:element name="customSelectionName" type="xs:string"/>
    <xs:element name="legend_visible" type="xs:boolean"/>
    <xs:element name="visible" type="xs:boolean"/>
    <xs:element name="colour" type="xs:string"/>
    <xs:element name="style" type="xs:string"/>
    <xs:element name="contact_MolDisp" type="xs:string"/>
    <xs:element name="drawing_style" type="xs:string"/>
    <xs:element name="label_params" type="tlabelParams"/>
    <xs:element name="selection_parameters" type="tSelectionParameters"/>
    <xs:element name="style_parameters" type="tStyleParameters"/>
    <xs:element name="colour_parameters" type="tColourParameters"/>
    <xs:element name="display_class" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tMapPlaneSelection">
   <xs:sequence>
    <xs:choice minOccurs="2" maxOccurs="2">
      <xs:element name="molDataName" type="xs:string"/>
      <xs:element name="selection" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tMapPlaneDefinition">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="raise_plane" type="xs:float"/>
      <xs:element name="contour_spacing" type="xs:float"/>
      <xs:element name="selection1" type="tMapPlaneSelection"/>
      <xs:element name="selection2" type="tMapPlaneSelection"/>
      <xs:element name="selection3" type="tMapPlaneSelection"/>
      <xs:element name="specify_plane_A" type="xs:float"/>
      <xs:element name="specify_plane_B" type="xs:float"/>
      <xs:element name="specify_plane_C" type="xs:float"/>
      <xs:element name="specify_plane_D" type="xs:float"/>
      <xs:element name="crystal" type="xs:string"/>
      <xs:element name="crystal_face" type="xs:string"/>
      <xs:element name="plane_mode" type="xs:string"/>
      <xs:element name="selection_mode" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tMapDisp">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="style" type="xs:string"/>
      <xs:element name="clip_mode" type="xs:string"/>
      <xs:element name="clip_MolDisp" type="xs:string"/>
      <xs:element name="surface_style" type="xs:string"/>
      <xs:element name="colour" type="xs:string"/>
      <xs:element name="opacity" type="xs:float"/>
      <xs:element name="radius" type="xs:float"/>
      <xs:element name="contour_level" type="xs:float"/>
      <xs:element name="atom_clip_radius" type="xs:float"/>
      <xs:element name="legend_visible" type="xs:boolean"/>
      <xs:element name="visible" type="xs:boolean"/>
      <xs:element name="plane_definition" type="tMapPlaneDefinition"/>
      <xs:element name="customSelectionName" type="xs:string"/>
      <xs:element name="display_class" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tVectorsSelection">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="vectors_selection_entry" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tFont">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="5">
      <xs:element name="weight" type="xs:string"/>
      <xs:element name="family" type="xs:string"/>
      <xs:element name="slant" type="xs:string"/>
      <xs:element name="size" type="xs:int"/>
      <xs:element name="underline" type="xs:int"/> <!-- FIXME picdef writes an int, surely this should be bool?-->
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tVectorsDispobj">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="line_width" type="xs:int"/>
      <xs:element name="scaling_mode" type="xs:int"/>
      <xs:element name="opacity" type="xs:float"/>
      <xs:element name="scale" type="xs:float"/>
      <xs:element name="cylinder_radius" type="xs:float"/>
      <xs:element name="cone_radius" type="xs:float"/>
      <xs:element name="dash_length" type="xs:float"/>
      <xs:element name="cone_fraction" type="xs:float"/>
      <xs:element name="default_dir" type="xs:string"/>
      <xs:element name="label_colour" type="xs:string"/>
      <xs:element name="arrow_head" type="xs:string"/>
      <xs:element name="dash_end" type="xs:string"/>
      <xs:element name="label_mode" type="xs:string"/>
      <xs:element name="cone_mode" type="xs:string"/>
      <xs:element name="line_colour" type="xs:string"/>
      <xs:element name="line_style" type="xs:string"/>
      <xs:element name="legend_visible" type="xs:boolean"/>
      <xs:element name="selection_complex" type="tVectorsSelection"/>
      <xs:element name="selection" type="xs:string"/>
      <xs:element name="font" type="tFont"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tVectorsData">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="filename" type="tFilename"/>
      <xs:element name="VectorsDispobj" type="tVectorsDispobj"/>
      <xs:element name="ccp4mg_creator_version" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tMapData">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="MapDisp" type="tMapDisp"/>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="filename" type="tFilename"/>
      <xs:element name="phi" type="xs:string"/>
      <xs:element name="f" type="xs:string"/>
      <xs:element name="rate" type="xs:float"/>
      <xs:element name="visible" type="xs:boolean"/>
      <xs:element name="difference" type="xs:boolean"/>
      <xs:element name="ccp4mg_creator_version" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tMolData">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="name" type="xs:string"/>
      <xs:element name="transform_matrix" type="tMatrix4x4"/>
      <xs:element name="MolDisp" type="tMolDisp"/>
      <xs:element name="SurfaceDispobj" type="tSurfaceDispobj"/>
      <xs:element name="SelectionScheme" type="tSelectionScheme"/>
      <xs:element name="HBonds" type="tHBonds"/>
      <xs:element name="Contacts" type="tHBonds"/>
      <xs:element name="Annotation" type="tAnnotation"/>
      <xs:element name="symmetry_mates" type="tSymmetryMates"/>
      <xs:element name="model_symmetry" type="tModelSymmetry"/>
      <xs:element name="load_animation" type="tLoadAnimation"/>
      <xs:element name="customResCIFFiles" type="tCustomResCIFFiles"/>
      <xs:element name="filename" type="tFilename"/>
      <xs:element name="visible" type="xs:boolean"/>
      <xs:element name="ccp4mg_creator_version" type="xs:string"/>
      <xs:element name="mol_colour" type="xs:string"/>
      <xs:element name="lastWizardRun" type="xs:string"/>
      <xs:element name="expanded" type="xs:boolean"/>
      <xs:element name="show_aromatic_rings" type="xs:boolean"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tCustomCIFMonomer">
   <xs:sequence>
    <xs:choice minOccurs="2" maxOccurs="2">
      <xs:element name="name" type="xs:string"/>
      <xs:element name="filename" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tCustomResCIFFiles">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="cifmonomer" type="tCustomCIFMonomer"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tAnimationFrame">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="start_frame" type="xs:int"/>
      <xs:element name="end_frame" type="xs:int"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tLoadAnimation">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="current_frame" type="tAnimationFrame"/>
      <xs:element name="frame_range" type="tAnimationFrame"/>
      <xs:element name="legend_name" type="xs:string"/>
      <xs:element name="file_format" type="xs:string"/>
      <xs:element name="filename" type="tFilename"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tColour">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="4">
      <xs:element name="red" type="xs:float"/>
      <xs:element name="green" type="xs:float"/>
      <xs:element name="blue" type="xs:float"/>
      <xs:element name="alpha" type="xs:float"/>
    </xs:choice>
   </xs:sequence>
   <xs:attribute name="name" type="xs:string" use="required"/>
  </xs:complexType>
  <xs:complexType name="tColourDefinitions">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="colour" type="tColour"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tColours">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="1">
      <xs:element name="colour_definitions" type="tColourDefinitions"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tOrientationAuto">
   <xs:sequence>
    <xs:choice minOccurs="2" maxOccurs="2">
      <xs:element name="selection" type="xs:string"/>
      <xs:element name="molData" type="xs:string"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tCustomClipPlane">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="5">
    <xs:element name="visible" type="xs:boolean"/>
    <xs:element name="a" type="xs:float"/>
    <xs:element name="b" type="xs:float"/>
    <xs:element name="c" type="xs:float"/>
    <xs:element name="d" type="xs:float"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tCustomClipPlanes">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="8">
      <xs:element name="plane" type="tCustomClipPlane"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tView">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="scale" type="xs:float"/>
      <xs:element name="orientation" type="tOrientation"/>
      <xs:element name="scale_auto" type="xs:boolean"/>
      <xs:element name="orientation_auto" type="tOrientationAuto"/>
      <xs:element name="centre_xyz" type="tCartesian"/>
      <xs:element name="centre_MolData" type="xs:string"/>
      <xs:element name="fog_enabled" type="xs:boolean"/>
      <xs:element name="fog_near" type="xs:float"/>
      <xs:element name="fog_far" type="xs:float"/>
      <xs:element name="slab_enabled" type="xs:boolean"/>
      <xs:element name="slab_width" type="xs:float"/>
      <xs:element name="slab_offset" type="xs:float"/>
      <xs:element name="clip_cap" type="xs:boolean"/>
      <xs:element name="customClipPlanes" type="tCustomClipPlanes"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tCartesian2D">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="2">
    <xs:element name="x" type="xs:float"/>
    <xs:element name="y" type="xs:float"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tCartesian">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="3">
    <xs:element name="x" type="xs:float"/>
    <xs:element name="y" type="xs:float"/>
    <xs:element name="z" type="xs:float"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
  <xs:complexType name="tOrientation">
   <xs:sequence>
    <xs:choice minOccurs="0" maxOccurs="4">
    <xs:element name="q0" type="xs:float"/>
    <xs:element name="q1" type="xs:float"/>
    <xs:element name="q2" type="xs:float"/>
    <xs:element name="q3" type="xs:float"/>
    </xs:choice>
   </xs:sequence>
  </xs:complexType>
</xs:schema>
