<?xml version="1.0" encoding="UTF-8"?>

<!ENTITY % reference "person CDATA #REQUIRED  tree CDATA #REQUIRED">

<!ELEMENT person (name | note | events | father | mother | spouse | locations)*>
<!ATTLIST person id  ID      #REQUIRED
                 sex (m | f) #IMPLIED>

<!ELEMENT name EMPTY>
<!ATTLIST name first    CDATA #REQUIRED
               last     CDATA #REQUIRED
               suffix   CDATA #IMPLIED
               nickname CDATA #IMPLIED
               middle   CDATA #IMPLIED>

<!ELEMENT father EMPTY>
<!ATTLIST father %reference;>

<!ELEMENT mother EMPTY>
<!ATTLIST mother %reference;>

<!ELEMENT spouse EMPTY>
<!ATTLIST spouse %reference;>

<!ELEMENT events (event+)>

<!ELEMENT event (#PCDATA)>
<!ATTLIST event place CDATA  #IMPLIED
                year  CDATA  #IMPLIED
                month CDATA  #IMPLIED
                day   CDATA  #IMPLIED
                type  (birth | death | achievement | christening | name | adoption) #REQUIRED>

<!ELEMENT locations (location+)>

<!ELEMENT location (#PCDATA)>
<!ATTLIST location type (address | phone | email | website) #REQUIRED
                   year  CDATA  #IMPLIED
                   month CDATA  #IMPLIED
                   day   CDATA  #IMPLIED>

<!ELEMENT note (#PCDATA)>