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

    <xs:element name="personnel">
        <xs:annotation>
            <xs:documentation>Defines the personnel as a collection of person elements.</xs:documentation>
        </xs:annotation>
        <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:annotation>
            <xs:documentation>Specify information about a person.</xs:documentation>
        </xs:annotation>
        <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:annotation>
                    <xs:documentation>Specify a required unique ID for this person.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="note" type="xs:string">
                <xs:annotation>
                    <xs:documentation>If there is anything to note about this person.</xs:documentation>
                </xs:annotation>            
            </xs:attribute>
            <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:annotation>
                    <xs:documentation>Specifies the salary for this person.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="name">
        <xs:annotation>
            <xs:documentation>Specify the person family and given name.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:all>
                <xs:element ref="family"/>
                <xs:element ref="given"/>
            </xs:all>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="family" type="xs:string">
        <xs:annotation>
            <xs:documentation>The person last name.</xs:documentation>
        </xs:annotation>
    </xs:element>
    
    <xs:element name="given" type="xs:string">
        <xs:annotation>
            <xs:documentation>The person first name.</xs:documentation>
        </xs:annotation>
    </xs:element>
    
    <xs:element name="email" type="xs:string">
        <xs:annotation>
            <xs:documentation>Email address for this person.</xs:documentation>
        </xs:annotation>
    </xs:element>
    
    <xs:element name="url">
        <xs:annotation>
            <xs:documentation>Enter an URL for this person.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="href" type="xs:string" default="http://">
                <xs:annotation>
                    <xs:documentation>Enter an URL for this person.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    
    <xs:element name="link">
        <xs:annotation>
            <xs:documentation>Specify who is the manager and who are the subordinates for this person.</xs:documentation>
        </xs:annotation>
        <xs:complexType>
            <xs:attribute name="manager" type="xs:IDREF">
                <xs:annotation>
                    <xs:documentation>The manager ID.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
            <xs:attribute name="subordinates" type="xs:IDREFS">
                <xs:annotation>
                    <xs:documentation>Space separated list with the subordinates IDs.</xs:documentation>
                </xs:annotation>
            </xs:attribute>
        </xs:complexType>
    </xs:element>
    
    <xs:notation name="gif" public="-//APP/Photoshop/4.0" system="photoshop.exe"/>
</xs:schema>
