<!--?xml version="1.0" encoding="UTF-8"?--> <!-- A Document Type Definition for genealogy data (as produced by Gramps) Copyright (c) 2001 Graham J. Williams Time-stamp: <2002/01/22 15:41:37 Graham.Williams@csiro.au> Freely Redistributable under the terms of the GNU General Public License. Based on GEDCOM and conforming to the Gramps XML encoding. Still under development and Gramps XML not complete. Information on Gramps is available from http:// --> <!-- DATABASE Defines an XML document which is a <database> consisting of a header Information about the "owner" of the database people families sources places objects bookmarks --> <!ELEMENT database (header, people?, families?, sources?, places?, objects?, bookmarks?)> <!-- ************************************************************ HEADER A <header> consists of <created> (information about this genealogical database) and <researcher> (information about the person who created this genealogical database) --> <!ELEMENT header (created, researcher?)> <!ELEMENT created EMPTY> <!ATTLIST created date CDATA #REQUIRED version CDATA #REQUIRED people CDATA #REQUIRED families CDATA #REQUIRED> <!ELEMENT researcher (resname, resaddr?, rescity?, resstate?, rescountry?, respostal?, resphone?, resemail?)> <!ELEMENT resname (#PCDATA)> <!ELEMENT resaddr (#PCDATA)> <!ELEMENT rescity (#PCDATA)> <!ELEMENT resstate (#PCDATA)> <!ELEMENT rescountry (#PCDATA)> <!ELEMENT respostal (#PCDATA)> <!ELEMENT resphone (#PCDATA)> <!ELEMENT resemail (#PCDATA)> <!-- ************************************************************ PEOPLE The UID is a place holder for PAF UID's that are imported. PAF generates a unique ID for each person which is useful for merges. It is not used by Gramps otherwise. --> <!ELEMENT people (person)*> <!ATTLIST people default CDATA #IMPLIED> <!-- PERSON gender Either M or F. name aka Also known as. Alternative names from marriage, adoption, legal name change, etc nick The nick name - a name the person is sometimes known by. --> <!ELEMENT person (gender, name?, aka*, nick?, pos?, uid?, event*, objref*, url*, childof*, address*, parentin*, sourceref?, attribute*, note?)> <!ATTLIST person id ID #REQUIRED> <!-- GENDER has values of M or F. --> <!ELEMENT gender (#PCDATA)> <!-- NAME and AKA first Given names last Surname suffix title E.g., Sargent Major --> <!ELEMENT name (first?, last?,suffix?,title?)> <!ATTLIST name conf CDATA #IMPLIED priv CDATA #IMPLIED> <!ELEMENT aka (first?, last?,suffix?,note?)> <!ATTLIST aka conf CDATA #IMPLIED priv CDATA #IMPLIED> <!ELEMENT first (#PCDATA)> <!ELEMENT last (#PCDATA)> <!ELEMENT suffix (#PCDATA)> <!ELEMENT title (#PCDATA)> <!ELEMENT nick (#PCDATA)> <!ELEMENT uid (#PCDATA)> <!ELEMENT pos EMPTY> <!ATTLIST pos x CDATA #REQUIRED y CDATA #REQUIRED> <!ELEMENT childof EMPTY> <!ATTLIST childof ref IDREF #REQUIRED mrel (Birth|Adopted|Stepchild|Other|Unknown) #IMPLIED frel (Birth|Adopted|Stepchild|Other|Unknown) #IMPLIED> <!ELEMENT parentin EMPTY> <!ATTLIST parentin ref IDREF #REQUIRED> <!ELEMENT address (dateval?,street?,city?,state?,country?,postal?, note?,sourceref?)> <!ATTLIST address conf CDATA #IMPLIED priv CDATA #IMPLIED> <!ELEMENT street (#PCDATA)> <!ELEMENT city (#PCDATA)> <!ELEMENT country (#PCDATA)> <!ELEMENT postal (#PCDATA)> <!ELEMENT state (#PCDATA)> <!-- ************************************************************ FAMILY An element to record information about a family. --> <!ELEMENT families (family)*> <!ELEMENT family (father?,mother?,event*,objref*,child*,attribute*,note?)> <!ATTLIST family id ID #REQUIRED type (Married|Unmarried|Partners|Other|Unkown) #IMPLIED> <!ELEMENT father EMPTY> <!ATTLIST father ref IDREF #REQUIRED> <!ELEMENT mother EMPTY> <!ATTLIST mother ref IDREF #REQUIRED> <!ELEMENT child EMPTY> <!ATTLIST child ref IDREF #REQUIRED> <!-- ************************************************************ SOURCES --> <!ELEMENT sources (source)*> <!ELEMENT source (sauthor?,spubinfo?,scallno?)> <!ATTLIST source id ID #REQUIRED> <!ELEMENT sauthor (#PCDATA)> <!ELEMENT spubinfo (#PCDATA)> <!ELEMENT scallno (#PCDATA)> <!-- ************************************************************ PLACES --> <!ELEMENT places (placeobj)*> <!ELEMENT placeobj (coord?,location*,objref*,url*,note?)> <!ATTLIST placeobj id ID #REQUIRED title CDATA #IMPLIED> <!ELEMENT coord EMPTY> <!ATTLIST coord long CDATA #REQUIRED lat CDATA #REQUIRED> <!ELEMENT location EMPTY> <!ATTLIST location city CDATA #IMPLIED county CDATA #IMPLIED state CDATA #IMPLIED country CDATA #IMPLIED parish CDATA #IMPLIED > <!ELEMENT objects (object)*> <!ELEMENT object (attribute)*> <!ATTLIST object id ID #REQUIRED src CDATA #IMPLIED mime CDATA #IMPLIED description CDATA #IMPLIED> <!-- ************************************************************ BOOKMARKS --> <!ELEMENT bookmarks (bookmark)*> <!ELEMENT bookmark EMPTY> <!ATTLIST bookmark ref IDREF #REQUIRED> <!-- ************************************************************ SHARED ELEMENTS --> <!ELEMENT attribute (note?,sourceref?)> <!ATTLIST attribute conf CDATA #IMPLIED priv CDATA #IMPLIED type CDATA #IMPLIED value CDATA #IMPLIED > <!--ELEMENT attr_type (#PCDATA)> <!ELEMENT attr_value (#PCDATA)--> <!-- EVENT We can enumerate all possibilities for an event and then this will not conform to Gramps as Gramps allows any type of events (i.e., a user can define their own type of event) . By allowing anything (CDATA) we no longer have automatic checking and in emacs no more automatic selection of event types. So decide to use the enumerated list for now unless there is a storm of protest. Alternative Birth Another possible birth date Degree Awarding of a degree Education Some step in the education process Graduation Graduation (often same as degree) --> <!ELEMENT event (dateval?,place?,description?,sourceref?,note?)> <!ATTLIST event type (Annulment|Birth|Death|Christening|Baptism|Engagement|Marriage| Occupation|Education|Degree|Immi|Burial|Cremation) #REQUIRED> <!ELEMENT dateval EMPTY> <!ATTLIST dateval val CDATA #REQUIRED type CDATA #IMPLIED> <!--ELEMENT date (#PCDATA) replaced by dateval--> <!ELEMENT description (#PCDATA)> <!ELEMENT note (#PCDATA)> <!ELEMENT url EMPTY> <!ATTLIST url href CDATA #REQUIRED conf CDATA #IMPLIED priv (0|1) #IMPLIED description CDATA #IMPLIED> <!ELEMENT place EMPTY> <!ATTLIST place ref IDREF #REQUIRED> <!ELEMENT sourceref (spage?,scomments?,stext?,sdate?)> <!ATTLIST sourceref ref IDREF #REQUIRED> <!ELEMENT spage (#PCDATA)> <!ELEMENT scomments (#PCDATA)> <!ELEMENT sdate (#PCDATA)> <!ELEMENT stext (#PCDATA)> <!ELEMENT objref (attribute)*> <!ATTLIST objref ref IDREF #REQUIRED > <!ELEMENT img EMPTY> <!ATTLIST img src CDATA #REQUIRED description CDATA #IMPLIED display CDATA #IMPLIED>