<!--
====================================================================
registry.stanford.edu/xml/person/2.0/slac/Person.dtd
version 2.0, 01/27/2015

DTD for the Stanford University Registry Person

Copyright 2002-2004 by the Board of Trustees of Stanford University
====================================================================
02/30/04 molive  created slac specific Person DTD
11/17/04 molive  updated to Person 1.2 DTD structure
2009-08-14: njafri updated to Person 1.3 DTD structure.
            modified for additional email/telephone fields.
03/18/14 ghung2 updated to include mail address and visiblity.
01/27/15 ghung2 added privgroup.
====================================================================
-->

<!-- +++++++++++++++++++++++++ Person +++++++++++++++++++++++++ -->

<!ELEMENT Person (name+, biodemo, location?, address*, telephone*,
                  email?, affiliation, privgroup*, visibility*)>
<!ATTLIST Person
     name               CDATA #REQUIRED
     refid              CDATA #REQUIRED
     regid              CDATA #IMPLIED
     univid             CDATA #IMPLIED
     sunetid            CDATA #IMPLIED
     source             (slac) #REQUIRED
>


<!-- +++++++++++++++++++++++++ Names +++++++++++++++++++++++++ -->

<!ELEMENT name (prefix?, first?, middle?, last, suffix?)>
<!ATTLIST name
     type               (full | preferred) #REQUIRED
     sourceval          CDATA #IMPLIED
>

<!ELEMENT first         (#PCDATA)>

<!ELEMENT middle        (#PCDATA)>

<!ELEMENT last          (#PCDATA)>

<!ELEMENT prefix        (#PCDATA)>

<!ELEMENT suffix        (#PCDATA)>


<!--  +++++++++++++++++++++++++ Bio Demo data +++++++++++++++++++++++++ -->

<!ELEMENT biodemo (gender, birthdate, ssn)>

<!ELEMENT gender        (#PCDATA)>

<!ELEMENT birthdate     (#PCDATA)>

<!ELEMENT ssn           (#PCDATA)>


<!-- +++++++++++++++++++++++++ Affiliations +++++++++++++++++++++++++ -->

<!ELEMENT affiliation (department, affdata+, place?)>
<!ATTLIST affiliation
     organization       (stanford) #REQUIRED
     type               (staff | staff:emeritus | staff:nonactive | staff:onleave | faculty:onleave |
                         staff:temporary | staff:casual | staff:student | staff:academic |
                         faculty | faculty:emeritus | faculty:nonactive) #REQUIRED
> 

<!ELEMENT department (organization)>
<!ATTLIST department
     code               CDATA #IMPLIED
>

<!ELEMENT affdata       (#PCDATA)>
<!ATTLIST affdata
     type               (job | jobtitle) #REQUIRED
     code               CDATA #IMPLIED
>

<!-- +++++++++++++++++++++++++ Organization +++++++++++++++++++++++++ -->

<!ELEMENT organization EMPTY>
<!ATTLIST organization
     adminid            CDATA #IMPLIED
     acadid             CDATA #IMPLIED
>

<!-- +++++++++++++++++++++++++ Addresses +++++++++++++++++++++++++ -->
<!-- The Registry supports up to 3 lines of address   -->

<!ELEMENT address (line+, city, (state | province), country, postalcode?)>
<!ATTLIST address
     type               (permanent | office | mail) #REQUIRED
>

<!ELEMENT line          (#PCDATA)>

<!ELEMENT city          (#PCDATA)>

<!ELEMENT state         EMPTY>
<!ATTLIST state
     code               CDATA #REQUIRED
>

<!ELEMENT province      EMPTY>
<!ATTLIST province
     code               CDATA #REQUIRED
>

<!ELEMENT country       EMPTY>
<!ATTLIST country
     alpha2             CDATA #REQUIRED
>

<!ELEMENT postalcode    (#PCDATA)>


<!-- +++++++++++++++++++++++++ Location +++++++++++++++++++++++++ -->

<!ELEMENT location EMPTY>
<!ATTLIST location
     type               (idmail) #REQUIRED
     code               CDATA #REQUIRED
     sourceval          CDATA #IMPLIED
>


<!-- +++++++++++++++++++++++++ Telephones +++++++++++++++++++++++++ -->

<!ELEMENT telephone (icc, area, number, ext?)>
<!ATTLIST telephone
     type               (permanent | office | mobile | local) #REQUIRED
     sourceval          CDATA #IMPLIED
>

<!ELEMENT icc           (#PCDATA)>

<!ELEMENT area          (#PCDATA)>

<!ELEMENT number        (#PCDATA)>

<!ELEMENT ext           (#PCDATA)>


<!-- +++++++++++++++++++++++++ Email +++++++++++++++++++++++++ -->

<!ELEMENT email (user, host)>
<!ATTLIST email
     type               (office | secondary) #REQUIRED
     sourceval          CDATA #IMPLIED
>

<!ELEMENT user (#PCDATA)>

<!ELEMENT host (#PCDATA)>


<!-- +++++++++++++++++++++++++ Place +++++++++++++++++++++++++ -->

<!ELEMENT place (address?, telephone*, email?)>
<!ATTLIST place
     type               (office) #REQUIRED
>


<!-- +++++++++++++++++++++++++ Privilege Groups +++++++++++++++++++++++++ -->

<!ELEMENT privgroup (#PCDATA)>


<!-- +++++++++++++++++++++++++ Visibilities +++++++++++++++++++++++++ -->

<!ELEMENT visibility (#PCDATA)>
<!ATTLIST visibility
     where              (online) #REQUIRED
     what               (idmail | permanentaddress | mailaddress | permanentphone |
                         affiliation | officeaddress | officephone | officeemail |
                         mobilephone | localphone | pagerphone | pageremail ) #REQUIRED
>


