<?xml version="1.0" encoding="utf-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="Person.dtd" xmlns:wmh="http://www.wmhelp.com/2003/eGenerator" elementFormDefault="qualified" targetNamespace="Person.dtd">
  <xs:element name="Person">
    <xs:annotation>
      <xs:documentation>
====================================================================
registry.stanford.edu/xml/person/2.0/campcomm/Person.dtd
version 2.0, 09/06/11

DTD for the Stanford University Registry Person

Copyright 2002-2004 by the Board of Trustees of Stanford University
====================================================================
03/19/2020 nataliew
    - Added leavestatus
09/06/11 asingh3
	- Added student_info and birthstate tag. 
	- Changed version from 1.2 to 2.0.
12/04/06 madhum 
	- added Emergency Contact elements and associated attributes
04/30/04 molive  
	- created campcomm specific Person 1.1 DTD
11/17/04 molive
	- updated to Person 1.2 DTD structure
====================================================================
</xs:documentation>
      <xs:documentation> +++++++++++++++++++++++++ Person +++++++++++++++++++++++++ </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="name" maxOccurs="unbounded"/>
        <xs:element ref="title" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="biodemo" minOccurs="0"/>
		<xs:element ref="leavestatus" minOccurs="0"/>
        <xs:element ref="address" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="telephone" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="email" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="location" minOccurs="0"/>
        <xs:element ref="affiliation" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="privgroup" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="visibility" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="student_info" minOccurs="0"/>
        <xs:element ref="emergency_contact" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:attribute name="name" type="xs:string" use="required"/>
      <xs:attribute name="refid" type="xs:string" use="required"/>
      <xs:attribute name="regid" type="xs:string"/>
      <xs:attribute name="univid" type="xs:string"/>
      <xs:attribute name="sunetid" type="xs:string"/>
      <xs:attribute name="source" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="campcomm"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="name">
    <xs:annotation>
      <xs:documentation> +++++++++++++++++++++++++ Names +++++++++++++++++++++++++ </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="prefix" minOccurs="0"/>
        <xs:element ref="first" minOccurs="0"/>
        <xs:element ref="middle" minOccurs="0"/>
        <xs:element ref="last"/>
        <xs:element ref="suffix" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="type" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="preferred"/>
            <xs:enumeration value="full"/>
            <xs:enumeration value="diploma"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="sourceval" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="prefix" type="xs:string"/>
  <xs:element name="first" type="xs:string"/>
  <xs:element name="middle" type="xs:string"/>
  <xs:element name="last" type="xs:string"/>
  <xs:element name="suffix" type="xs:string"/>
  <xs:element name="title">
    <xs:annotation>
      <xs:documentation> +++++++++++++++++++++++++ Title +++++++++++++++++++++++++ </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="type" use="required">
            <xs:simpleType>
              <xs:restriction base="xs:NMTOKEN">
                <xs:enumeration value="faculty"/>
                <xs:enumeration value="facultyshort"/>
                <xs:enumeration value="job"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="biodemo">
    <xs:annotation>
      <xs:documentation>  +++++++++++++++++++++++++ Bio Demo data +++++++++++++++++++++++++ </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="gender" minOccurs="0"/>
        <xs:element ref="ssn" minOccurs="0"/>
        <xs:element ref="birthdate" minOccurs="0"/>
        <xs:element ref="birthplace" minOccurs="0"/>
        <xs:element ref="birthstate" minOccurs="0"/>
        <xs:element ref="deceased" minOccurs="0"/>
        <xs:element ref="visatype" minOccurs="0"/>
        <xs:element ref="ethnictype" minOccurs="0"/>
        <xs:element ref="uscitizenship" minOccurs="0"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="leavestatus" type="xs:string"/>
  <xs:element name="gender" type="xs:string"/>
  <xs:element name="birthdate" type="xs:string"/>
  <xs:element name="birthplace" type="xs:string"/>
  <xs:element name="birthstate" type="xs:string"/>
  <xs:element name="deceased" type="xs:string"/>
  <xs:element name="visatype">
    <xs:complexType>
      <xs:attribute name="code" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="ethnictype">
    <xs:complexType>
      <xs:attribute name="code" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="uscitizenship">
    <xs:complexType>
      <xs:attribute name="code" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="ssn" type="xs:string"/>
  <xs:element name="address">
    <xs:annotation>
      <xs:documentation> +++++++++++++++++++++++++ Addresses +++++++++++++++++++++++++ </xs:documentation>
      <xs:documentation> The Registry supports up to 3 lines of address   </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="line" maxOccurs="unbounded"/>
        <xs:element ref="city" minOccurs="0"/>
        <xs:choice minOccurs="0">
          <xs:element ref="state"/>
          <xs:element ref="province"/>
        </xs:choice>
        <xs:element ref="country"/>
        <xs:element ref="postalcode" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="type" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="permanent"/>
            <xs:enumeration value="local"/>
            <xs:enumeration value="mail"/>
            <xs:enumeration value="billing"/>
            <xs:enumeration value="office"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="contact_address">
    <xs:annotation>
      <xs:documentation> +++++++++++++++++++++++++ Emergency Contact Address +++++++++++++++++++++++++ </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="line" maxOccurs="unbounded"/>
        <xs:element ref="city" minOccurs="0"/>
        <xs:choice minOccurs="0">
          <xs:element ref="state"/>
          <xs:element ref="province"/>
        </xs:choice>
        <xs:element ref="country"/>
        <xs:element ref="postalcode" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="type" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="primary"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
    </xs:complexType>
  </xs:element>
  <xs:element name="line" type="xs:string"/>
  <xs:element name="city" type="xs:string"/>
  <xs:element name="state">
    <xs:complexType>
      <xs:attribute name="code" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="province">
    <xs:complexType>
      <xs:attribute name="code" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="country">
    <xs:complexType>
      <xs:attribute name="alpha3" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="postalcode" type="xs:string"/>
  <xs:element name="location">
    <xs:annotation>
      <xs:documentation> +++++++++++++++++++++++++ Location +++++++++++++++++++++++++ </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:attribute name="type" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="idmail"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="code" type="xs:string" use="required"/>
      <xs:attribute name="sourceval" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="telephone">
    <xs:annotation>
      <xs:documentation> +++++++++++++++++++++++++ Telephones +++++++++++++++++++++++++ </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="icc" minOccurs="0"/>
        <xs:element ref="area" minOccurs="0"/>
        <xs:element ref="number"/>
        <xs:element ref="ext" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="type" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="permanent"/>
            <xs:enumeration value="local"/>
            <xs:enumeration value="office"/>
            <xs:enumeration value="officefax"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="sourceval" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="contact_telephone">
    <xs:annotation>
      <xs:documentation> +++++++++++++++++++++++++ Emergency Contact Telephone +++++++++++++++++++++++++ </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="icc" minOccurs="0"/>
        <xs:element ref="area" minOccurs="0"/>
        <xs:element ref="number"/>
      </xs:sequence>
      <xs:attribute name="type" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="primary"/>
            <xs:enumeration value="home"/>
            <xs:enumeration value="work"/>
            <xs:enumeration value="mobile"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="sourceval" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="icc" type="xs:string"/>
  <xs:element name="area" type="xs:string"/>
  <xs:element name="number" type="xs:string"/>
  <xs:element name="ext" type="xs:string"/>
  <xs:element name="email">
    <xs:annotation>
      <xs:documentation> +++++++++++++++++++++++++ Email +++++++++++++++++++++++++ </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="user"/>
        <xs:element ref="host"/>
      </xs:sequence>
      <xs:attribute name="type" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="primary"/>
            <xs:enumeration value="secondary"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="sourceval" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="user" type="xs:string"/>
  <xs:element name="host" type="xs:string"/>
  <xs:element name="place">
    <xs:annotation>
      <xs:documentation> +++++++++++++++++++++++++ Place +++++++++++++++++++++++++ </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="address" minOccurs="0"/>
        <xs:element ref="telephone" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:attribute name="type" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="office"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="sourceval" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="affiliation">
    <xs:annotation>
      <xs:documentation> +++++++++++++++++++++++++ Affiliations +++++++++++++++++++++++++ </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="department"/>
        <xs:element ref="affdata" maxOccurs="unbounded"/>
        <xs:element ref="place" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="organization" use="required">
        <xs:simpleType>
          <xs:restriction base="xs:NMTOKEN">
            <xs:enumeration value="stanford"/>
          </xs:restriction>
        </xs:simpleType>
      </xs:attribute>
      <xs:attribute name="type" type="xs:string" use="required"/>
      <xs:attribute name="until" type="xs:string"/>
      <xs:attribute name="effective" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="department">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="organization"/>
      </xs:sequence>
      <xs:attribute name="code" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="affdata">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="type" type="xs:string"/>
          <xs:attribute name="code" type="xs:string"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="organization">
    <xs:annotation>
      <xs:documentation> +++++++++++++++++++++++++ Organization +++++++++++++++++++++++++ </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:attribute name="adminid" type="xs:string"/>
      <xs:attribute name="acadid" type="xs:string"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="student_info">
    <xs:annotation>
      <xs:documentation> +++++++++++++++++++++++++ Student Info +++++++++++++++++++++++++ </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="service_indicators" minOccurs="0"/>
        <xs:element ref="groups" minOccurs="0"/>
        <xs:element ref="advisors" minOccurs="0"/>
        <xs:element ref="terms" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="athlete" minOccurs="0"/>
        <xs:element ref="cardinal_care" minOccurs="0" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="service_indicators">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="service_indicator" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="service_indicator">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="code" type="xs:string" use="required"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="groups">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="group" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="group">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="code" type="xs:string" use="required"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="advisors">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="advisor" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="advisor">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="role" minOccurs="0"/>
        <xs:element ref="advisor_name" minOccurs="0"/>
        <xs:element ref="advisor_last_name" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="univid" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="role">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="code" type="xs:string" use="required"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="advisor_name" type="xs:string"/>
  <xs:element name="advisor_last_name" type="xs:string"/>
  <xs:element name="terms">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="term" maxOccurs="unbounded"/>
      </xs:sequence>
      <xs:attribute name="acad_career" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="term">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="acad_level_bot" minOccurs="0"/>
        <xs:element ref="acad_level_eot" minOccurs="0"/>
        <xs:element ref="acad_level_proj" minOccurs="0"/>
        <xs:element ref="cumulated_gpa" minOccurs="0"/>
        <xs:element ref="stf_special_current_gpa" minOccurs="0"/>
        <xs:element ref="stf_special_cumulated_gpa" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="code" type="xs:string" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="acad_level_bot" type="xs:string"/>
  <xs:element name="acad_level_eot" type="xs:string"/>
  <xs:element name="acad_level_proj" type="xs:string"/>
  <xs:element name="cumulated_gpa" type="xs:string"/>
  <xs:element name="stf_special_current_gpa" type="xs:string"/>
  <xs:element name="stf_special_cumulated_gpa" type="xs:string"/>
  <xs:element name="athlete">
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="participant" maxOccurs="unbounded"/>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
  <xs:element name="participant">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="code" type="xs:string" use="required"/>
          <xs:attribute name="active" type="xs:string" use="required"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="cardinal_care">
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="term" type="xs:string" use="required"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="emergency_contact">
    <xs:annotation>
      <xs:documentation> +++++++++++++++++++++++++ Emergency Contact +++++++++++++++++++++++++ </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element ref="contact_name"/>
        <xs:element ref="contact_relationship"/>
        <xs:element ref="contact_telephone" minOccurs="0" maxOccurs="unbounded"/>
        <xs:element ref="contact_address" minOccurs="0"/>
      </xs:sequence>
      <xs:attribute name="number" type="xs:string" use="required"/>
      <xs:attribute name="primary" type="xs:boolean" use="required"/>
      <xs:attribute name="sync_permanent" type="xs:boolean" use="required"/>
    </xs:complexType>
  </xs:element>
  <xs:element name="contact_name" type="xs:string">
    <xs:annotation>
      <xs:documentation> +++++++++++++++++++++++++ Emergency Contact Name +++++++++++++++++++++++++ </xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="contact_relationship">
    <xs:annotation>
      <xs:documentation> +++++++++++++++++++++++++ Emergency Contact Relationship +++++++++++++++++++++++++ </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="code" type="xs:string" use="required"/>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
  <xs:element name="privgroup" type="xs:string">
    <xs:annotation>
      <xs:documentation> +++++++++++++++++++++++++ Privilege Groups +++++++++++++++++++++++++ </xs:documentation>
    </xs:annotation>
  </xs:element>
  <xs:element name="visibility">
    <xs:annotation>
      <xs:documentation> +++++++++++++++++++++++++ Visibilities +++++++++++++++++++++++++ </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:simpleContent>
        <xs:extension base="xs:string">
          <xs:attribute name="where" use="required">
            <xs:simpleType>
              <xs:restriction base="xs:NMTOKEN">
                <xs:enumeration value="ferpa"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
          <xs:attribute name="what" use="required">
            <xs:simpleType>
              <xs:restriction base="xs:NMTOKEN">
                <xs:enumeration value="permanentaddress"/>
                <xs:enumeration value="mailaddress"/>
                <xs:enumeration value="localaddress"/>
                <xs:enumeration value="residenceaddress"/>
                <xs:enumeration value="officeaddress"/>
                <xs:enumeration value="primaryemail"/>
                <xs:enumeration value="name"/>
                <xs:enumeration value="birthdate"/>
                <xs:enumeration value="birthplace"/>
                <xs:enumeration value="permanentphone"/>
                <xs:enumeration value="localphone"/>
                <xs:enumeration value="officephone"/>
                <xs:enumeration value="photo"/>
                <xs:enumeration value="academicdata"/>
              </xs:restriction>
            </xs:simpleType>
          </xs:attribute>
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>
</xs:schema>