<!-- CapabilityExchange.xsd - ITU-T H.812.3 I.2 - Schema for the root.xml -->
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified"
targetNamespace="http://hl7.org/schemas/hdata/2013/08/hrf"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:hrf="http://hl7.org/schemas/hdata/2013/08/hrf">
 <xs:element type="xs:string" name="id"/>
 <xs:element type="xs:float" name="version"/>
 <xs:element type="xs:dateTime" name="created"/>
 <xs:element type="xs:dateTime" name="lastModified"/>
 <xs:element type="xs:string" name="name"/>
 <xs:element type="xs:anyURI" name="uri"/>
 <xs:element type="xs:string" name="email"/>
 <xs:element type="xs:string" name="reference"/>
 <xs:element type="xs:string" name="path"/>
 <xs:element type="xs:string" name="profileID"/>
 <xs:element type="xs:boolean" name="resourcePrefix"/>
 <xs:element type="xs:string" name="resourceTypeID"/>
 <xs:element type="xs:boolean" name="metadataSupport"/>
 <xs:element type="xs:string" name="mediaType"/>
 <xs:element type="xs:string" name="validator"/>

 <xs:group name="extensionElement">
  <xs:sequence>
   <xs:any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
   <xs:any namespace="##local" processContents="lax" minOccurs="0" maxOccurs="unbounded"/>
  </xs:sequence>
 </xs:group>

 <xs:element name="author">
  <xs:complexType>
   <xs:sequence>
    <xs:element ref="hrf:name"/>
    <xs:element ref="hrf:uri" minOccurs="0"/>
    <xs:element ref="hrf:email" minOccurs="0"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>

 <xs:element name="profile">
  <xs:complexType>
   <xs:sequence>
    <xs:element ref="hrf:id"/>
    <xs:element ref="hrf:reference"/>
    <xs:group ref="hrf:extensionElement" minOccurs="0" maxOccurs="unbounded"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>

 <xs:element name="section">
  <xs:complexType>
   <xs:sequence>
    <xs:element ref="hrf:path"/>
    <xs:element ref="hrf:profileID" minOccurs="0" maxOccurs="unbounded"/>
    <xs:element ref="hrf:resourcePrefix" minOccurs="0"/>
    <xs:element ref="hrf:resourceTypeID" minOccurs="0"/>
    <xs:element ref="hrf:metadataSupport" minOccurs="0"/>
    <xs:group ref="hrf:extensionElement" minOccurs="0" maxOccurs="unbounded"/>
    <xs:element ref="hrf:section" minOccurs="0" maxOccurs="unbounded"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>

 <xs:element name="representation">
  <xs:complexType>
   <xs:sequence>
    <xs:element ref="hrf:mediaType"/>
    <xs:element ref="hrf:validator" minOccurs="0" maxOccurs="unbounded"/>
    <xs:group ref="hrf:extensionElement" minOccurs="0" maxOccurs="unbounded"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>

 <xs:element name="resourceType">
  <xs:complexType>
   <xs:sequence>
    <xs:element ref="hrf:id"/>
    <xs:element ref="hrf:reference"/>
    <xs:element ref="hrf:representation" minOccurs="0" maxOccurs="unbounded"/>
    <xs:group ref="hrf:extensionElement" minOccurs="0" maxOccurs="unbounded"/>
   </xs:sequence>
  </xs:complexType>
 </xs:element>

 <xs:element name="root">
  <xs:complexType>
   <xs:sequence>
    <xs:element ref="hrf:id"/>
    <xs:element ref="hrf:version"/>
    <xs:element ref="hrf:created"/>
    <xs:element ref="hrf:lastModified"/>
    <xs:element ref="hrf:profile" minOccurs="0" maxOccurs="unbounded"/>
    <xs:element ref="hrf:section" maxOccurs="unbounded"/>
    <xs:element ref="hrf:resourceType" minOccurs="0" maxOccurs="unbounded"/>
    <xs:group ref="hrf:extensionElement" minOccurs="0" maxOccurs="unbounded"/>
   </xs:sequence>
  </xs:complexType>
  <xs:key name="PKResourceType">
   <xs:selector xpath="hrf:resourceType/hrf:id"/>
   <xs:field xpath="."/>
  </xs:key>
  <xs:keyref name="FKSectionToResourceType" refer="hrf:PKResourceType">
   <xs:selector xpath="hrf:section/hrf:resourceTypeID"/>
   <xs:field xpath="."/>
  </xs:keyref>
  <xs:key name="PKProfile">
   <xs:selector xpath="hrf:profile/hrf:id"/>
   <xs:field xpath="."/>
  </xs:key>
  <xs:keyref name="FKSectionToProfile" refer="hrf:PKProfile">
   <xs:selector xpath="hrf:section/hrf:profileID"/>
   <xs:field xpath="."/>
  </xs:keyref>
 </xs:element>
</xs:schema>
