<!--
********************************************************
*
* dna_common.xsd
*
* Authors: The DNA team, http://www.dna.ac.uk
*
* Version: SId: dna_common.xsd,v 1.18 2005/12/19 16:19:28 svensson Exp S
*
********************************************************
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:dna="http://www.dna.ac.uk/DNA_XMLSchema">
<xsd:simpleType name="status_code">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="ok"/>
<xsd:enumeration value="warning"/>
<xsd:enumeration value="error"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="mosflm_commands">
<xsd:sequence>
<xsd:element name="command"
minOccurs="0"
maxOccurs="unbounded"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="scala_commands">
<xsd:sequence>
<xsd:element name="command"
minOccurs="0"
maxOccurs="unbounded"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="xds_commands">
<xsd:sequence>
<xsd:element name="command"
minOccurs="0"
maxOccurs="unbounded"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="extra_commands">
<xsd:sequence>
<xsd:element name="mosflm_commands"
minOccurs="0"
maxOccurs="1"
type="mosflm_commands"/>
<xsd:element name="scala_commands"
minOccurs="0"
maxOccurs="1"
type="scala_commands"/>
<xsd:element name="xds_commands"
minOccurs="0"
maxOccurs="1"
type="xds_commands"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="status">
<xsd:sequence>
<xsd:element name="code"
minOccurs="1"
maxOccurs="1"
type="status_code"/>
<xsd:element name="message"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="fileinfo">
<xsd:sequence>
<xsd:element name="directory"
minOccurs="1"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="prefix"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="suffix"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="template"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="run_number"
minOccurs="0"
maxOccurs="1"
type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
<!-- <fileinfo>
<directory>/data/id14eh1/inhouse/dna</directory>
<prefix>dnatest</prefix>
<run_number>3</run_number>
</fileinfo>
-->
<xsd:complexType name="oscillation_sequence">
<xsd:sequence>
<xsd:element name="start"
minOccurs="0"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="end"
minOccurs="0"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="range"
minOccurs="0"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="number_of_images"
minOccurs="0"
maxOccurs="1"
type="xsd:integer"/>
<xsd:element name="overlap"
minOccurs="0"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="exposure_time"
minOccurs="0"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="start_image_number"
minOccurs="0"
maxOccurs="1"
type="xsd:integer"/>
<xsd:element name="number_of_passes"
minOccurs="0"
maxOccurs="1"
type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
<!-- Example oscillation_sequence:
<oscillation_sequence>
<run_number>1</run_number>
<start>0.0</start>
<range>1.0</range>
<number_of_images>2</number_of_images>
<overlap>-89.0</overlap>
<exposure_time>1.0</exposure_time>
<start_image_number>1</start_image_number>
<number_of_passes>1</number_of_passes>
</oscillation_sequence>
-->
<xsd:complexType name="detector">
<xsd:sequence>
<xsd:element name="type"
minOccurs="1"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="suffix"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="beam">
<xsd:sequence>
<xsd:element name="x"
minOccurs="1"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="y"
minOccurs="1"
maxOccurs="1"
type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="cell">
<xsd:sequence>
<xsd:element name="a"
minOccurs="1"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="b"
minOccurs="1"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="c"
minOccurs="1"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="alpha"
minOccurs="1"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="beta"
minOccurs="1"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="gamma"
minOccurs="1"
maxOccurs="1"
type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="experiment">
<xsd:sequence>
<xsd:element name="wavelength"
minOccurs="1"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="distance"
minOccurs="1"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="resolution"
minOccurs="0"
maxOccurs="1"
type="resolution"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="matrix">
<xsd:sequence>
<xsd:element name="e11"
minOccurs="1"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="e12"
minOccurs="1"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="e13"
minOccurs="1"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="e21"
minOccurs="1"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="e22"
minOccurs="1"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="e23"
minOccurs="1"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="e31"
minOccurs="1"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="e32"
minOccurs="1"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="e33"
minOccurs="1"
maxOccurs="1"
type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
<!-- TYPE dna:Percentage - a decimal number constrained thus:
0.0 .le. value .le. 100.0
Using FORTRAN style constraints because symbols are used by XML -->
<xsd:simpleType name="percentage">
<xsd:restriction base="xsd:double">
<xsd:minInclusive value="0.0"/>
<xsd:maxInclusive value="100.0"/>
</xsd:restriction>
</xsd:simpleType>
<!-- The spacegroup - which must be one of these -->
<xsd:simpleType name="spacegroup">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="unknown"/>
<xsd:enumeration value="P1"/>
<xsd:enumeration value="P2"/>
<xsd:enumeration value="P21"/>
<xsd:enumeration value="C2"/>
<xsd:enumeration value="P222"/>
<xsd:enumeration value="P2221"/>
<xsd:enumeration value="P21212"/>
<xsd:enumeration value="P212121"/>
<xsd:enumeration value="C222"/>
<xsd:enumeration value="C2221"/>
<xsd:enumeration value="F222"/>
<xsd:enumeration value="I222"/>
<xsd:enumeration value="I212121"/>
<xsd:enumeration value="P4"/>
<xsd:enumeration value="P41"/>
<xsd:enumeration value="P42"/>
<xsd:enumeration value="P43"/>
<xsd:enumeration value="P422"/>
<xsd:enumeration value="P4212"/>
<xsd:enumeration value="P4122"/>
<xsd:enumeration value="P41212"/>
<xsd:enumeration value="P4222"/>
<xsd:enumeration value="P42212"/>
<xsd:enumeration value="P4322"/>
<xsd:enumeration value="P43212"/>
<xsd:enumeration value="I4"/>
<xsd:enumeration value="I41"/>
<xsd:enumeration value="I422"/>
<xsd:enumeration value="I4122"/>
<xsd:enumeration value="P3"/>
<xsd:enumeration value="P31"/>
<xsd:enumeration value="P32"/>
<xsd:enumeration value="P312"/>
<xsd:enumeration value="P321"/>
<xsd:enumeration value="P3112"/>
<xsd:enumeration value="P3121"/>
<xsd:enumeration value="P3212"/>
<xsd:enumeration value="P3221"/>
<xsd:enumeration value="P6"/>
<xsd:enumeration value="P61"/>
<xsd:enumeration value="P65"/>
<xsd:enumeration value="P62"/>
<xsd:enumeration value="P64"/>
<xsd:enumeration value="P63"/>
<xsd:enumeration value="P622"/>
<xsd:enumeration value="P6122"/>
<xsd:enumeration value="P6522"/>
<xsd:enumeration value="P6222"/>
<xsd:enumeration value="P6422"/>
<xsd:enumeration value="P6322"/>
<xsd:enumeration value="R3"/>
<xsd:enumeration value="R32"/>
<xsd:enumeration value="H3"/>
<xsd:enumeration value="H32"/>
<xsd:enumeration value="P23"/>
<xsd:enumeration value="P213"/>
<xsd:enumeration value="P432"/>
<xsd:enumeration value="P4232"/>
<xsd:enumeration value="P4332"/>
<xsd:enumeration value="P4132"/>
<xsd:enumeration value="F23"/>
<xsd:enumeration value="F432"/>
<xsd:enumeration value="F4132"/>
<xsd:enumeration value="I23"/>
<xsd:enumeration value="I213"/>
<xsd:enumeration value="I432"/>
<xsd:enumeration value="I4132"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="dna_message">
<xsd:sequence>
<xsd:element name="type"
minOccurs="1"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="content_type"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="level"
minOccurs="0"
maxOccurs="1"
type="xsd:integer"/>
<xsd:element name="message"
minOccurs="1"
maxOccurs="1"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<!-- input & output reflection files -->
<xsd:complexType name="input_reflections">
<xsd:sequence>
<xsd:element name="hklin"
type="xsd:string"
minOccurs="1"
maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="output_reflections">
<xsd:sequence>
<xsd:element name="hklout"
type="xsd:string"
minOccurs="1"
maxOccurs="1"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="resolution">
<xsd:sequence>
<xsd:element name="lower"
minOccurs="0"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="upper"
minOccurs="0"
maxOccurs="1"
type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
<!-- The abort level - which must be one of these -->
<xsd:simpleType name="abort_level">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="stop_immediately"/>
<xsd:enumeration value="stop_after_finishing_current_task"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:complexType name="abort_request">
<xsd:sequence>
<xsd:element name="level"
minOccurs="1"
maxOccurs="1"
type="abort_level"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="abort_response">
<xsd:sequence>
<xsd:element name="status"
minOccurs="1"
maxOccurs="1"
type="status"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="sample_reference">
<xsd:sequence>
<xsd:element name="code"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="container_reference"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="sample_location"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="blSampleId"
minOccurs="0"
maxOccurs="1"
type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>