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

<!ELEMENT Person (name+, biodemo?, address*, telephone*, email*, affiliation, privgroup*, visibility*)>
<!ATTLIST Person
     name             CDATA #REQUIRED
     source           (campcomm) #REQUIRED
     refid            CDATA #REQUIRED
>

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

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

<!ELEMENT prefix        (#PCDATA)>

<!ELEMENT first         (#PCDATA)>

<!ELEMENT middle        (#PCDATA)>

<!ELEMENT last          (#PCDATA)>

<!ELEMENT suffix        (#PCDATA)>


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

<!ELEMENT biodemo (gender?, birthdate?, birthplace?, deceased?,
                   visatype?, ethnictype?, uscitizenship?, ssn?)>

<!ELEMENT gender        (#PCDATA)>

<!ELEMENT birthdate     (#PCDATA)>

<!ELEMENT birthplace    (#PCDATA)>

<!ELEMENT deceased      (#PCDATA)>

<!ELEMENT visatype      (#PCDATA)>
<!ATTLIST visatype
     code               CDATA #REQUIRED
>

<!ELEMENT ethnictype    (#PCDATA)>
<!ATTLIST ethnictype
     code               CDATA #REQUIRED
>

<!ELEMENT uscitizenship (#PCDATA)>
<!ATTLIST uscitizenship
     code               CDATA #REQUIRED
>

<!ELEMENT ssn           (#PCDATA)>

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

<!ELEMENT address (line+, city?, state?, province?, country?, postalcode?)>
<!ATTLIST address
     type               (permanentaddress | localaddress | mailaddress | officeaddress) #REQUIRED
>

<!ELEMENT line          (#PCDATA)>

<!ELEMENT city          (#PCDATA)>

<!ELEMENT state         (#PCDATA)>
<!ATTLIST state
     code               CDATA #REQUIRED
>

<!ELEMENT province      (#PCDATA)>
<!ATTLIST province
     code               CDATA #REQUIRED
>

<!ELEMENT country       (#PCDATA)>
<!ATTLIST country
     alpha3             CDATA #REQUIRED
>

<!ELEMENT postalcode    (#PCDATA)>

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

<!ELEMENT location (#PCDATA)>
<!ATTLIST location
     type               (officeidmail) #REQUIRED
     code               CDATA #REQUIRED
     sourceval          CDATA #IMPLIED
>

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

<!ELEMENT telephone (icc, area, number, ext?)>
<!ATTLIST telephone
     type               (permanentphone | localphone | officephone | officefax) #REQUIRED
     sourceval          CDATA #IMPLIED
>

<!ELEMENT icc           (#PCDATA)>

<!ELEMENT area          (#PCDATA)>

<!ELEMENT number        (#PCDATA)>

<!ELEMENT ext           (#PCDATA)>

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

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

<!ELEMENT user (#PCDATA)>

<!ELEMENT host (#PCDATA)>

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

<!ELEMENT place (location, address, telephone)*>
<!ATTLIST place
     type               (office) #REQUIRED
     sourceval          CDATA #IMPLIED
>

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

<!ELEMENT affiliation (department?, place?, affdata*)>
<!ATTLIST affiliation
     organization       (stanford) #REQUIRED
     type               CDATA #REQUIRED
     until              CDATA #IMPLIED
>

<!-- Syntax: "affiliationcode[:qualifier]",
              e.g., "faculty:emeritus", "staff" -->

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

<!ELEMENT affdata (#PCDATA)>
<!ATTLIST affdata
     type               CDATA #IMPLIED
     code               CDATA #IMPLIED
>

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

<!ELEMENT privgroup (#PCDATA)>

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

<!ELEMENT visibility (#PCDATA)>
<!ATTLIST visibility
     where              (ferpa) #REQUIRED
     what               (fullname | preferred | permanentaddress | localaddress | mailaddress | officeaddress | permanentphone | localphone | officephone | officefax | primaryemail | photo) #REQUIRED
>
