<?xml version="1.0" encoding="UTF-8"?>
<!-- edited with XMLSpy v2007 (http://www.altova.com) by Rob Moran (Opportunity Links) -->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:apd="http://www.govtalk.gov.uk/people/AddressAndPersonalDetails" xmlns="http://www.opp-links.org.uk/XMLSchema/ServiceDirectory" xmlns:rxr="http://ilrt.org/discovery/2004/03/rxr/" xmlns:bs7666="http://www.govtalk.gov.uk/people/bs7666" xmlns:esd="http://www.esd.org.uk/standards" targetNamespace="http://www.opp-links.org.uk/XMLSchema/ServiceDirectory" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:annotation>
    <xs:documentation>Service data schema developed by Opportunity Links for passing structured service information</xs:documentation>
  </xs:annotation>
  <xs:annotation>
    <xs:appinfo>
      <Metadata xmlns="http://www.govtalk.gov.uk/metadata/egms">
        <DC.Creator Href="mailto:enquiries@opp-links.org.uk">Opportunity Links</DC.Creator>
        <DC.Date.Created Scheme="DCTERMS.W3CDTF">2006-07-06</DC.Date.Created>
        <DC.Date.Modified Scheme="DCTERMS.W3CDTF">2006-06-14</DC.Date.Modified>
        <DC.Description>Service and service provider types</DC.Description>
        <DC.Format Scheme="http://www.iana.org/assignments/media-types/">text/xml</DC.Format>
        <DC.Identifier Scheme="DCTERMS.URI">http://www.opp-links.org.uk/XMLSchema/ServicesDirectory/ServiceTypes-v1-1.xsd</DC.Identifier>
        <DC.Language Scheme="DCTERMS.ISO639-2">eng</DC.Language>
        <DC.Publisher Href="mailto:enquiries@opp-links.org.uk">Opportunity Links</DC.Publisher>
        <DC.Relation.ConformsTo>http://www.w3.org/2001/XMLSchema</DC.Relation.ConformsTo>
        <DC.Subject Scheme="eGMS.IPSV">Information and communication, Information management; Service Information</DC.Subject>
        <DC.Title>Service Types 1.1</DC.Title>
        <DC.Type scheme="eGMS.TES">XML Schema</DC.Type>
        <eGMS.Copyright>Opportunity Links 2007</eGMS.Copyright>
        <eGMS.Project>Service Directory Webservice</eGMS.Project>
        <eGMS.Status>Draft Version 1.1</eGMS.Status>
      </Metadata>
    </xs:appinfo>
    <xs:documentation>The following external schemas are referenced (imported) by this schema</xs:documentation>
  </xs:annotation>
  <xs:import namespace="http://www.govtalk.gov.uk/people/AddressAndPersonalDetails" schemaLocation="AddressTypes-v2-0.xsd"/>
  <xs:import namespace="http://www.govtalk.gov.uk/people/bs7666" schemaLocation="bs7666-v2-0.xsd"/>
  <xs:import namespace="http://www.govtalk.gov.uk/people/AddressAndPersonalDetails" schemaLocation="ContactTypes-v1-3.xsd"/>
  <xs:import namespace="http://ilrt.org/discovery/2004/03/rxr/" schemaLocation="rxr-v1-0.xsd"/>
  <xs:annotation>
    <xs:documentation>Main service structures</xs:documentation>
  </xs:annotation>
  <xs:complexType name="ServiceStructure">
    <xs:annotation>
      <xs:documentation>Data structure for the service details</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:group ref="eGMSGroup"/>
      <xs:group ref="RefinedeGMSGroup"/>
      <xs:group ref="SharedGroup"/>
      <xs:element name="WaitingList" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Details of any waiting list for the service</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="CostDetails" type="CostStructure" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Details of the cost of the service</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:choice>
        <xs:annotation>
          <xs:documentation>Choice between an ID for the service provider or the complete record</xs:documentation>
        </xs:annotation>
        <xs:element name="ServiceProviderIdentifier" type="xs:string" minOccurs="0">
          <xs:annotation>
            <xs:documentation>Unique identifier of the service provider</xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="ServiceProvider" type="ServiceProviderStructure" minOccurs="0">
          <xs:annotation>
            <xs:documentation>Details about the provider of the service</xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:choice>
    </xs:sequence>
    <xs:attribute name="CRBPolicy" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>Whether the service has a CRB policy</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="ServiceProviderStructure">
    <xs:annotation>
      <xs:documentation>Data structure for the service provider information</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:group ref="eGMSGroup"/>
      <xs:group ref="RefinedeGMSGroup"/>
      <xs:group ref="SharedGroup"/>
      <xs:element name="Services" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Optional element outlining the services offered by the provider</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:choice>
            <xs:annotation>
              <xs:documentation>Choice between IDs for the services of the provider or the complete records</xs:documentation>
            </xs:annotation>
            <xs:element name="ServiceIdentifier" type="xs:string" minOccurs="0" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>List of unique identifiers of services offered by the provider</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="Service" type="ServiceStructure" minOccurs="0" maxOccurs="unbounded">
              <xs:annotation>
                <xs:documentation>List of services offered by the provider</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:choice>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="CRBPolicy" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>Whether the service provider has a CRB policy</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:annotation>
    <xs:documentation>Types and groups</xs:documentation>
  </xs:annotation>
  <xs:simpleType name="FormatType">
    <xs:annotation>
      <xs:documentation>Type for restricting string formats</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="plain"/>
      <xs:enumeration value="html"/>
      <xs:enumeration value="xhtml"/>
      <xs:enumeration value="bbcode"/>
      <xs:enumeration value="structuredtext"/>
      <xs:enumeration value="rest"/>
      <xs:enumeration value="wiki"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="NumberType">
    <xs:annotation>
      <xs:documentation>Contact number types</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="telephone"/>
      <xs:enumeration value="fax"/>
      <xs:enumeration value="mobile"/>
      <xs:enumeration value="minicom"/>
      <xs:enumeration value="freephone"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:simpleType name="DayOfWeek">
    <xs:annotation>
      <xs:documentation>Days of the week</xs:documentation>
    </xs:annotation>
    <xs:restriction base="xs:string">
      <xs:enumeration value="Monday"/>
      <xs:enumeration value="Tuesday"/>
      <xs:enumeration value="Wednesday"/>
      <xs:enumeration value="Thursday"/>
      <xs:enumeration value="Friday"/>
      <xs:enumeration value="Saturday"/>
      <xs:enumeration value="Sunday"/>
    </xs:restriction>
  </xs:simpleType>
  <xs:group name="eGMSGroup">
    <xs:annotation>
      <xs:documentation>Group for eGMS metadata</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="DC.Contributor" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>An entity responsible for making contributions to the content of the resource</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="Href" type="xs:anyURI"/>
              <xs:attribute name="Role" type="xs:token"/>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="DC.Creator">
        <xs:annotation>
          <xs:documentation>An entity primarily responsible for making the content of the resource</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="Href" type="xs:anyURI"/>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="DC.Date.Created" type="xs:dateTime">
        <xs:annotation>
          <xs:documentation>Date of creation of the resource</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DC.Date.Issued" type="xs:dateTime" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Date of publication of the resource</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DC.Date.Modified" type="xs:dateTime" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Date on which the resource was changed</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DC.Date.Valid" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Dates between which the resource is valid</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="StartDate" type="xs:dateTime" minOccurs="0"/>
            <xs:element name="EndDate" type="xs:dateTime" minOccurs="0"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="DC.Description" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Description of the resource. Multiple formats of the description can be input to support existing presentation markup</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="Format" type="FormatType" use="required">
                <xs:annotation>
                  <xs:documentation>Markup format of the description.</xs:documentation>
                </xs:annotation>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="DC.Identifier">
        <xs:annotation>
          <xs:documentation>An unambiguous reference to the resource within a given context</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="Href" type="xs:anyURI"/>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="DC.Language" type="ControlledListStructure" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Language of the resource</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DC.Publisher">
        <xs:annotation>
          <xs:documentation>An entity responsible for making the resource available</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="Href" type="xs:anyURI"/>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="DC.Subject" type="ControlledListStructure" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Categories of the resource</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DC.Title" type="xs:string">
        <xs:annotation>
          <xs:documentation>Title of the resource</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DC.Type" type="ControlledListStructure" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Type of the resource</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="eGMS.Copyright" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Statement and identifier indicating the legal ownership and rights regarding use and re-use of all or part of the resource</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="eGMS.Keyword" type="xs:string" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Keywords for the resource</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="RefinedeGMSGroup">
    <xs:annotation>
      <xs:documentation>Group for eGMS metadata which refine existing elements</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="AccessChannel" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Access channels the resource is available through</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="ControlledListStructure">
              <xs:attribute name="Refines" type="xs:NMTOKEN" fixed="DC.Coverage">
                <xs:annotation>
                  <xs:documentation>Refines DC.Coverage</xs:documentation>
                </xs:annotation>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="AreaCovered" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>The areas covered by the resource</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="ControlledListStructure">
              <xs:attribute name="Refines" type="xs:NMTOKEN" fixed="DC.Coverage">
                <xs:annotation>
                  <xs:documentation>Refines DC.Coverage</xs:documentation>
                </xs:annotation>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="Availability" type="AvailabilityStructure" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Availability of the resource</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SuitableAgeRange" type="AgeRangeStructure" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Details of the age ranges the resource is suitable for</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:group name="SharedGroup">
    <xs:annotation>
      <xs:documentation>Group for elements shared between structures</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Accreditation" type="ControlledListStructure" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Accreditations or quality standards of the resource</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Contact" type="ContactStructure" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Contacts for the resource</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ContactDetails" type="ContactDetailsStructure" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Contact details of the resource</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="DeliveryChannel" type="ControlledListStructure" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>The delivery channels this resource can be delivered through</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Directions" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Directions to the location of the resource</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Facility" type="ControlledListStructure" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Facilities offered by the resource</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="LanguageSpoken" type="ControlledListStructure" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Languages spoken by operators of the resource</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EligibilityCriteria" type="CriteriaStructure" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Eligibility criteria of the resource</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ReferralCriteria" type="CriteriaStructure" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Referral criteria of the resource</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ReferralProcedures" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Referral procedures of the resource</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="SpecialProvisions" type="ProvisionStructure" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Special provisions offered by the resource</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Notes" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Additional information about the resource</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Metadata" type="MetadataStructure" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Data structure for extensible metadata which conforms to RDF format</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:group>
  <xs:annotation>
    <xs:documentation>Supporting structures</xs:documentation>
  </xs:annotation>
  <xs:complexType name="AddressStructure">
    <xs:annotation>
      <xs:documentation>Data structure for address information</xs:documentation>
    </xs:annotation>
    <xs:complexContent>
      <xs:extension base="apd:UKAddressStructure">
        <xs:sequence>
          <xs:element name="GridReference" type="bs7666:CoordinateStructure" minOccurs="0">
            <xs:annotation>
              <xs:documentation>Grid reference of the postal address</xs:documentation>
            </xs:annotation>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:complexType name="AgeRangeStructure">
    <xs:annotation>
      <xs:documentation>Data structure for ages</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="From" type="AgeStructure" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Age from</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="To" type="AgeStructure" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Age to</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Details" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Textual information about age ranges</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Refines" type="xs:NMTOKEN" fixed="DCTERMS.Audience">
      <xs:annotation>
        <xs:documentation>Refines DCTERMS.Audience</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="AgeStructure">
    <xs:annotation>
      <xs:documentation>Data structure for age ranges</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Years" type="xs:int" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Age (in Years)</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Months" type="xs:int" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Age (in Months)</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="AvailabilityStructure">
    <xs:annotation>
      <xs:documentation>Data structure for availability information</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="StartDateTime" type="xs:dateTime" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Date and/or time service starts</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="EndDateTime" type="xs:dateTime" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Date and/or time service ends</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Period" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Normal opening times</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:sequence>
            <xs:element name="StartTime" type="xs:time" minOccurs="0">
              <xs:annotation>
                <xs:documentation>Time period starts</xs:documentation>
              </xs:annotation>
            </xs:element>
            <xs:element name="EndTime" type="xs:time" minOccurs="0">
              <xs:annotation>
                <xs:documentation>Time period ends</xs:documentation>
              </xs:annotation>
            </xs:element>
          </xs:sequence>
          <xs:attribute name="Day" type="DayOfWeek" use="required">
            <xs:annotation>
              <xs:documentation>Day of the week (add duplicates for multiple periods in a single day)</xs:documentation>
            </xs:annotation>
          </xs:attribute>
        </xs:complexType>
      </xs:element>
      <xs:element name="Details" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Textual information about availability (for example, term-time or bank holidays)</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="Refines" type="xs:NMTOKEN" fixed="DC.Coverage">
      <xs:annotation>
        <xs:documentation>Refines DC.Coverage</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="ContactDetailsStructure">
    <xs:annotation>
      <xs:documentation>Data structure for contact details information</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Address" type="AddressStructure" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Postal address of the contact</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ContactNumber" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Contact numbers of the contact</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:complexContent>
            <xs:extension base="apd:TelephoneStructure">
              <xs:attribute name="Type" type="NumberType" use="required">
                <xs:annotation>
                  <xs:documentation>Type of the contact number</xs:documentation>
                </xs:annotation>
              </xs:attribute>
            </xs:extension>
          </xs:complexContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="EmailAddress" type="apd:EmailStructure" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Email address of the contact</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="WebsiteAddress" type="xs:anyURI" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Website address of the contact</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="ContactStructure">
    <xs:annotation>
      <xs:documentation>Data structure for contact information</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Name" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Name of the contact</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Roles" type="RoleStructure" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Roles of the contact</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="ContactDetails" type="ContactDetailsStructure">
        <xs:annotation>
          <xs:documentation>Contact details of the contact</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="MainContact" type="xs:boolean">
      <xs:annotation>
        <xs:documentation>Whether the contact is the main contact</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="ControlledListStructure">
    <xs:annotation>
      <xs:documentation>Data structure for controlled lists and taxonomies</xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="Id" type="xs:integer" use="required"/>
        <xs:attribute name="ConceptId" type="xs:integer" use="optional"/>
        <xs:attribute name="ItemName" type="xs:string" use="required">
          <xs:annotation>
            <xs:documentation>Code of the controlled list</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="ListName" type="xs:string" use="required">
          <xs:annotation>
            <xs:documentation>Name of the controlled list</xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="HomeLocation" type="xs:anyURI" use="optional">
          <xs:annotation>
            <xs:documentation>URI of the controlled list</xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>
  <xs:complexType name="CostStructure">
    <xs:annotation>
      <xs:documentation>Data structure for costs</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Costs" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Main cost details</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="OtherCosts" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Additional cost details such as discounts</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="ContactForCosts" type="xs:boolean" use="optional">
      <xs:annotation>
        <xs:documentation>Whether to contact for cost information</xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="CriteriaStructure">
    <xs:annotation>
      <xs:documentation>Data structure for criteria</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Criteria" type="ControlledListStructure" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Criteria entries from a defined list</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Details" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Criteria details</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="MetadataStructure">
    <xs:annotation>
      <xs:documentation>Data structure for extensible metadata which conforms to RDF format</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element ref="rxr:triple" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attributeGroup ref="rxr:i18n"/>
  </xs:complexType>
  <xs:complexType name="ProvisionStructure">
    <xs:annotation>
      <xs:documentation>Data structure for provisions</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="WheelchairAccess" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Whether wheelchair access is available</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="HasProvision" type="xs:boolean" use="required">
                <xs:annotation>
                  <xs:documentation>Whether the service offers this provision</xs:documentation>
                </xs:annotation>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="CulturalProvision" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Whether cultural provision is offered</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="HasProvision" type="xs:boolean" use="required">
                <xs:annotation>
                  <xs:documentation>Whether the service offers this provision</xs:documentation>
                </xs:annotation>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="SpecialDiet" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Whether special diets are catered for</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="HasProvision" type="xs:boolean" use="required">
                <xs:annotation>
                  <xs:documentation>Whether the service offers this provision</xs:documentation>
                </xs:annotation>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="SpecialNeeds" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Whether special needs are catered for</xs:documentation>
        </xs:annotation>
        <xs:complexType>
          <xs:simpleContent>
            <xs:extension base="xs:string">
              <xs:attribute name="HasProvision" type="xs:boolean" use="required">
                <xs:annotation>
                  <xs:documentation>Whether the service offers this provision</xs:documentation>
                </xs:annotation>
              </xs:attribute>
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>
      <xs:element name="Details" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Textual information about provisions</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
  <xs:complexType name="RoleStructure">
    <xs:annotation>
      <xs:documentation>Data structure for roles</xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="Role" type="ControlledListStructure" minOccurs="0" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>Role entries from a defined list</xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="Details" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>Role details</xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:schema>