<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xmlns:xs="http://www.w3.org/2001/XMLSchema"
           xmlns:html="http://www.w3.org/1999/xhtml"
           xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty">
  <xs:complexType name="personType">
    <xs:sequence>
      <xs:element maxOccurs="1" name="personName" type="xs:string"/>

      <xs:element maxOccurs="1" name="personTitle" type="xs:string"/>

      <xs:element maxOccurs="1" name="homepage" type="xs:string"/>

      <xs:element maxOccurs="1" name="researchInterests" type="xs:string"/>

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

      <xs:element maxOccurs="1" name="advisor" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="projectType">
    <xs:sequence>
      <xs:element maxOccurs="1" name="projectTitle" type="xs:string"/>

      <xs:element name="desription" type="xs:string"/>

      <xs:element name="link" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="paperType">
    <xs:sequence>
      <xs:element maxOccurs="1" name="title" type="xs:string"/>

      <xs:element maxOccurs="1" name="authors">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="author"/>
          </xs:sequence>

          <xs:attribute name="authorName" use="required"/>
        </xs:complexType>
      </xs:element>

      <xs:element maxOccurs="1" name="publication" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="seminarType">
    <xs:sequence>
      <xs:element maxOccurs="1" name="title" type="xs:string"/>

      <xs:element maxOccurs="1" name="speaker" type="xs:string"/>

      <xs:element maxOccurs="1" name="date" type="xs:string"/>

      <xs:element maxOccurs="1" name="location" type="xs:string"/>

      <xs:element maxOccurs="1" name="host" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="courseType">
    <xs:sequence>
      <xs:element maxOccurs="1" name="title" type="xs:string"/>

      <xs:element maxOccurs="1" name="description" type="xs:string"/>

      <xs:element maxOccurs="1" name="prerequisites" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

  <xs:element name="dbgroup">
    <xs:complexType>
      <xs:sequence>
        <xs:element maxOccurs="1" name="members">
          <xs:complexType>
            <xs:sequence>
              <xs:element maxOccurs="1" name="faculties">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="faculty" type="personType"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>

              <xs:element maxOccurs="1" name="phds">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="phdStudent" type="personType"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>

              <xs:element maxOccurs="1" name="mscs">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="mscStudent" type="personType"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>

              <xs:element maxOccurs="1" name="associates">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="associate" type="personType"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>

              <xs:element maxOccurs="1" name="alumi">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="person">
                      <xs:complexType>
                        <xs:attribute name="name"/>
                      </xs:complexType>
                    </xs:element>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>

        <xs:element maxOccurs="1" name="projects">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="project" type="projectType"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>

        <xs:element maxOccurs="1" name="publications">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="year">
                <xs:complexType>
                  <xs:sequence>
                    <xs:element name="paper" type="paperType"/>
                  </xs:sequence>
                </xs:complexType>
              </xs:element>
            </xs:sequence>
          </xs:complexType>
        </xs:element>

        <xs:element maxOccurs="1" name="seminars">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="seminar" type="seminarType"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>

        <xs:element maxOccurs="1" name="courses">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="course" type="courseType"/>
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>

      <xs:attribute name="groupTitle"/>
    </xs:complexType>
  </xs:element>
</xs:schema>
