<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs='http://www.w3.org/2001/XMLSchema'>

 <xs:import namespace="http://www.w3.org/XML/1998/namespace">
   <xs:annotation>
     <xs:documentation>
        The schemaLocation of the relevant file is
        "http://www.w3.org/2001/xml.xsd"; however,
        we don't want to assume people are always
        connected to the 'net when playing with this file.
     </xs:documentation>
   </xs:annotation>
 </xs:import>

 <xs:element name="personnel">
  <xs:complexType>
   <xs:sequence>
     <xs:element ref="person" minOccurs='1' maxOccurs='unbounded'/>
   </xs:sequence>
  </xs:complexType>

  <xs:unique name="unique1">
   <xs:selector xpath="person"/>
   <xs:field xpath="name/given"/>
   <xs:field xpath="name/family"/>
  </xs:unique>
  <xs:key name='empid'>
   <xs:selector xpath="person"/>
   <xs:field xpath="@id"/>
  </xs:key>
  <xs:keyref name="keyref1" refer='empid'>
   <xs:selector xpath="person"/> 
   <xs:field xpath="link/@manager"/>  
  </xs:keyref>

 </xs:element>

 <xs:element name="person">
  <xs:complexType>
   <xs:sequence>
     <xs:element ref="name"/>
     <xs:element ref="email" minOccurs='0' maxOccurs='unbounded'/>
     <xs:element ref="url"   minOccurs='0' maxOccurs='unbounded'/>
     <xs:element ref="link"  minOccurs='0' maxOccurs='1'/>
   </xs:sequence>
   <xs:attribute name="id"  type="xs:ID" use='required'/>
   <xs:attribute name="note" type="xs:string"/>
   <xs:attribute name="contr" default="false">
    <xs:simpleType>
     <xs:restriction base = "xs:string">
       <xs:enumeration value="true"/>
       <xs:enumeration value="false"/>
     </xs:restriction>
    </xs:simpleType>
   </xs:attribute>
   <xs:attribute name="salary" type="xs:integer"/>
   <xs:anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="skip"/>
  </xs:complexType>
 </xs:element>

 <xs:element name="name">
  <xs:complexType>
   <xs:all>
    <xs:element ref="family"/>
    <xs:element ref="given"/>
   </xs:all>
   <xs:anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="skip"/>
  </xs:complexType>
 </xs:element>

 <xs:element name="family">
   <xs:complexType>
     <xs:simpleContent>
       <xs:extension base='xs:string'>
          <xs:anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="skip"/>
        </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
 </xs:element>

 <xs:element name="given" >
   <xs:complexType>
     <xs:simpleContent>
       <xs:extension base='xs:string'>
          <xs:anyAttribute namespace="http://www.w3.org/XML/1998/namespace" processContents="skip"/>
        </xs:extension>
     </xs:simpleContent>
   </xs:complexType>
 </xs:element>

 <xs:element name="email" type='xs:string'/>

 <xs:element name="url">
  <xs:complexType>
   <xs:attribute name="href" type="xs:string" default="http://"/>
  </xs:complexType>
 </xs:element>

 <xs:element name="link">
  <xs:complexType>
   <xs:attribute name="manager" type="xs:IDREF"/>
   <xs:attribute name="subordinates" type="xs:IDREFS"/>
  </xs:complexType>
 </xs:element>

 <xs:notation name='gif' public='-//APP/Photoshop/4.0' system='photoshop.exe'/>

</xs:schema>