<!--
********************************************************
*
* db.xsd
*
* Authors: The DNA team, http://www.dna.ac.uk
*
* Version: SId: db.xsd,v 1.1.2.1 2004/03/12 11:10:07 spruce Exp S
*
********************************************************
-->
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:dna="http://www.dna.ac.uk/DNA_XMLSchema">
<xsd:include schemaLocation="dna_common.xsd"/>
<xsd:complexType name="proposal">
<xsd:sequence>
<xsd:element name="proposal_key"
minOccurs="0"
maxOccurs="1"
type="xsd:integer"/>
<xsd:element name="propos_uo_ref"
minOccurs="0"
maxOccurs="1"
type="xsd:integer"/>
<xsd:element name="proposal_code"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="proposal_number"
minOccurs="0"
maxOccurs="1"
type="xsd:integer"/>
<xsd:element name="surname"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="labo_name"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="labo_pays_code"
minOccurs="0"
maxOccurs="1"
type="xsd:integer"/>
<xsd:element name="propos_tit"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="db_proposal">
<xsd:sequence>
<xsd:element name="proposal"
minOccurs="1"
maxOccurs="1"
type="proposal"/>
<xsd:element name="session"
minOccurs="0"
maxOccurs="1"
type="db_session"/>
<xsd:element name="start_date"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="end_date"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="run"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="db_session">
<xsd:sequence>
<xsd:element name="sessionno"
minOccurs="0"
maxOccurs="1"
type="xsd:integer"/>
<xsd:element name="se_pl_no"
minOccurs="0"
maxOccurs="1"
type="xsd:integer"/>
<xsd:element name="user_no"
minOccurs="0"
maxOccurs="1"
type="xsd:integer"/>
<xsd:element name="proposal_key"
minOccurs="0"
maxOccurs="1"
type="xsd:integer"/>
<xsd:element name="scheduled"
minOccurs="0"
maxOccurs="1"
type="xsd:integer"/>
<xsd:element name="local_contact"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="date_deb"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="date_fin"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="no_shifts"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="instr_nom"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="exp_operator"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="no_perf_shifts"
minOccurs="0"
maxOccurs="1"
type="xsd:integer"/>
<xsd:element name="comment"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="blom_comment"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="lc_comment"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="sample">
<xsd:sequence>
<xsd:element name="protein_id"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="crystal_key"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="suffix"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<xsd:complexType name="db_collect_store_request">
<xsd:sequence>
<xsd:element name="db_proposal"
minOccurs="1"
maxOccurs="1"
type="db_proposal"/>
<xsd:element name="fileinfo"
minOccurs="1"
maxOccurs="1"
type="fileinfo"/>
<xsd:element name="oscillation_sequence"
minOccurs="1"
maxOccurs="unbounded"
type="oscillation_sequence"/>
<xsd:element name="sample"
minOccurs="0"
maxOccurs="1"
type="sample"/>
<xsd:element name="wavelength"
minOccurs="0"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="xbeam"
minOccurs="0"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="ybeam"
minOccurs="0"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="distance"
minOccurs="0"
maxOccurs="1"
type="xsd:double"/>
<xsd:element name="resolution"
minOccurs="0"
maxOccurs="1"
type="xsd:double"/>
</xsd:sequence>
</xsd:complexType>
<!-- Example collect_request:
This looks exactly like a collect request but it is used differently.
Maybe it will evolve!
<db_collect_store_request>
<db_proposal>
<proposal>
</proposal>
<db_session>
<sessionno>123454</sessionno>
</db_session>
</db_proposal>
<fileinfo>
<directory>/data/id14eh1/inhouse/dna</directory>
<prefix>dnatest</prefix>
</fileinfo>
<oscillation_sequence>
<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>
</db_collect_store_request>
-->
<xsd:complexType name="db_collect_store_response">
<xsd:sequence>
<xsd:element name="status"
minOccurs="1"
maxOccurs="1"
type="status"/>
</xsd:sequence>
</xsd:complexType>
<!-- Example collect_response:
<db_collect_store_response>
<status>
<code>ok</code>
</status>
</db_collect_store_response>
-->
<xsd:complexType name="db_image_store_request">
<xsd:sequence>
<xsd:element name="filename"
minOccurs="1"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="directory"
minOccurs="1"
maxOccurs="1"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<!-- Example image_store_request:
This would have been fileinfo but the database needs to have the exact image
name in order to display the image. This is not possible with fileinfo.
<db_image_store_request>
<filename> xxx_001.img </filename>
<directory>/data/id14eh1/inhouse/dna</directory>
</db_image_store_request>
-->
<xsd:complexType name="db_collect_store_response">
<xsd:sequence>
<xsd:element name="status"
minOccurs="1"
maxOccurs="1"
type="status"/>
</xsd:sequence>
</xsd:complexType>
<!-- Example collect_response:
<db_collect_store_response>
<status>
<code>ok</code>
</status>
</db_collect_store_response>
-->
<xsd:complexType name="db_proposal_request">
<xsd:sequence>
<xsd:element name="category"
minOccurs="1"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="code"
minOccurs="1"
maxOccurs="1"
type="xsd:integer"/>
<xsd:element name="start_date"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="end_date"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
<xsd:element name="run"
minOccurs="0"
maxOccurs="1"
type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
<!-- Example proposal_request:
<db_proposal_request>
<category> LS </category>
<code>1234</code>
</db_proposal_request>
-->
<xsd:complexType name="db_proposal_response">
<xsd:sequence>
<xsd:element name="status"
minOccurs="1"
maxOccurs="1"
type="status"/>
<xsd:element name="db_proposal"
minOccurs="0"
maxOccurs="1"
type="db_proposal"/>
<xsd:element name="db_session"
minOccurs="1"
maxOccurs="unbounded"
type="db_session"/>
</xsd:sequence>
</xsd:complexType>
<!-- Example collect_response:
The response to a login is to return an xml document with the proposal and all
the sessions associated with it.
<db_proposal_response>
<status>
<code>ok</code>
</status>
<proposal>
<propos_categ_code>LS</propos_categ_code>
<propos_categ_cpt>1234</propos_categ_cpt>
<proposid>1</proposid>
<surname>spruce</surname>
<labo_name>esrf</labo_name>
<labo_pays_code>F</labo_pays_code>
<propos_tit>test</propos_tit>
</proposal>
<session>
<se_pl_no> 1234 </se_pl_no>....
</session>
</db_proposal_response>
-->
<xsd:complexType name="db_set_session_request">
<xsd:sequence>
<xsd:element name="sessionno"
minOccurs="1"
maxOccurs="1"
type="xsd:integer"/>
</xsd:sequence>
</xsd:complexType>
<!-- Example set_session_request:
The response to a login is to return an xml document with the proposal and all
the sessions associated with it.
<db_set_session_request>
<sessionno>14566</sessionno>
</db_set_session_request>
-->
<xsd:complexType name="db_set_session_response">
<xsd:sequence>
<xsd:element name="status"
minOccurs="1"
maxOccurs="1"
type="status"/>
</xsd:sequence>
</xsd:complexType>
</xsd:schema>