<?xml version="1.0" encoding="UTF-8"?>
<!-- XML Schema for Angel RM configuration file -->
<!-- Version 0.09 -->
<!-- edited by Simon McLeish (s.mcleish@lse.ac.uk) 20/08/03 -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
	xmlns="http://www.angel.ac.uk/rm_config"
	elementFormDefault="qualified"
	attributeFormDefault="unqualified"
	targetNamespace="http://www.angel.ac.uk/rm_config"
	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://www.angel.ac.uk/rm_config http://www.angel.ac.uk/schemas/rm_config.xsd">
  <xs:annotation>
    <xs:documentation>
XML Schema for Angel RM resource descriptions
Version 0.09
Edited by Simon McLeish (s.mcleish@lse.ac.uk) 2003-08-20
    </xs:documentation>
  </xs:annotation>
  <xs:element name="rm_config">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="rdb_data" type="db_data_type" maxOccurs="1" minOccurs="1"/>
	<xs:element name="bib_data" type="db_data_type" maxOccurs="1" minOccurs="0"/>
	<xs:element name="host" type="xs:string" maxOccurs="1" minOccurs="1"/>
	<xs:element ref="port" maxOccurs="1" minOccurs="1"/>
	<xs:element name="adminemail" type="xs:string" maxOccurs="1" minOccurs="1"/>
	<xs:element ref="logfile" maxOccurs="1" minOccurs="1"/>
	<xs:element name="lockfiledir" type="xs:string" maxOccurs="1" minOccurs="1"/>
	<xs:element ref="xsl_data" maxOccurs="1" minOccurs="0"/>
	<xs:element ref="schema_data" maxOccurs="1" minOccurs="0"/>
	<xs:element name="diagnostic_list" type="xs:string" maxOccurs="1" minOccurs="1"/>
	<xs:element ref="permittedHost" maxOccurs="unbounded" />
	<xs:element name="defaultLang" type="xs:string" maxOccurs="1" minOccurs="1" />
	<xs:element name="matchAltNames" type="xs:string" maxOccurs="1" minOccurs="1" />
	<xs:element ref="client" maxOccurs="unbounded" minOccurs="0" />
	<xs:element ref="server" maxOccurs="unbounded" minOccurs="0" />
	<xs:element ref="metadata" maxOccurs="unbounded" minOccurs="0" />
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" use="required" />
      <xs:anyAttribute />
    </xs:complexType>
  </xs:element>
  <xs:element name="port">
    <xs:complexType>
      <xs:simpleContent>
      	<xs:extension base="xs:string">
      	  <xs:attribute name="type" type="xs:string" use="required" />
	</xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="xsl_data">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="transformer_location" type="xs:string" />
	<xs:element name="stylesheet_dir" type="xs:string" />
	<xs:element name="tidy_command" type="xs:string" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="client">
    <xs:complexType>
      <xs:sequence minOccurs="0" maxOccurs="unbounded">
        <xs:element ref="permittedHost" minOccurs="0" maxOccurs="unbounded" />
        <xs:element ref="bib_field" minOccurs="0" maxOccurs="unbounded" />
        <xs:element ref="stylesheet" minOccurs="0" maxOccurs="unbounded" />
        <xs:element name="timeout" type="xs:string" minOccurs="0" />
        <xs:element ref="logfile" minOccurs="0" />
        <xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:attribute name="location" type="xs:string" use="required" />
      <xs:attribute name="protocol" type="xs:string" use="required" />
      <xs:attribute name="version" type="xs:string" />
    </xs:complexType>
  </xs:element>
  <xs:element name="logfile" type="xs:string" />
  <xs:element name="stylesheet">
    <xs:complexType>
      <xs:simpleContent>
      	<xs:extension base="xs:string">
      	  <xs:attribute name="id" type="xs:string" />
	</xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="permittedHost" type="xs:string" />
  <xs:complexType name="db_data_type">
    <xs:sequence minOccurs="1" maxOccurs="5">
      <xs:element name="uri" type="xs:string" maxOccurs="1" minOccurs="0"/>
      <xs:element name="userid" type="xs:string" maxOccurs="1" minOccurs="0" />
      <xs:element name="password" type="xs:string" maxOccurs="1" minOccurs="0" />
      <xs:element name="driver" type="xs:string" maxOccurs="1" minOccurs="0" />
      <xs:element name="version" type="xs:string" maxOccurs="1" minOccurs="0" />
      <xs:element name="preserve_days" type="xs:nonNegativeInteger" maxOccurs="1" minOccurs="0" />
    </xs:sequence>
  </xs:complexType>
  <xs:element name="bib_field">
    <xs:complexType>
      <xs:attribute name="bib1_id" type="xs:positiveInteger" use="required" />
      <xs:attribute name="protocol_id" type="xs:string" use="required" />
      <xs:attribute name="protocol_sub_id" type="xs:string" />
    </xs:complexType>
  </xs:element>
  <xs:element name="timeout" type="xs:positiveInteger" />
  <xs:element name="schema_data">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="schema_location" minOccurs="0" maxOccurs="unbounded">
	  <xs:complexType>
	    <xs:attribute name="label" type="xs:string" use="required" />
	    <xs:attribute name="uri" type="xs:string" use="required" />
	  </xs:complexType>
	</xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="server">
    <xs:complexType>
      <xs:sequence>
      	<xs:element ref="stylesheet" minOccurs="0" maxOccurs="unbounded" />
	<xs:element ref="parameter" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" />
      <xs:attribute name="protocol" type="xs:string" use="required" />
      <xs:attribute name="version" type="xs:string" />
    </xs:complexType>
  </xs:element>
  <xs:element name="metadata">
    <xs:complexType>
      <xs:sequence>
      	<xs:element ref="bib_field" minOccurs="0" maxOccurs="unbounded" />
      </xs:sequence>
      <xs:attribute name="format" type="xs:string" />
    </xs:complexType>
  </xs:element>
  <xs:element name="field" type="fieldType" />
  <xs:element name="parameter" type="fieldType" />
  <xs:complexType name="fieldType">
    <xs:attribute name="name" type="xs:string" use="required" />
    <xs:attribute name="value" type="xs:string" use="required" />
  </xs:complexType>
</xs:schema>

