<?xml version="1.0" encoding="UTF-8"?> <!-- # Gramps - a GTK+/GNOME based genealogy program # # Copyright (C) 2001 Graham J. Williams # Copyright (C) 2000-2006 Donald N. Allingham # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # $Id$ --> <!-- This is the Document Type Definition file for v1.1.0 of the GRAMPS XML genealogy data format. Please use the following formal public identifier to identify it: "-//GRAMPS//DTD GRAMPS XML V1.1.0//EN" For example: <!DOCTYPE database PUBLIC "-//GRAMPS//DTD GRAMPS XML V1.1.0//EN" "http://gramps-project.org/xml/1.1.0/grampsxml.dtd" [...]> --> <!-- 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 repositories bookmarks --> <!ELEMENT database (header, events?, people?, families?, sources?, places?, objects?, repositories?, bookmarks?)> <!ATTLIST database xmlns CDATA #FIXED "http://gramps-project.org/xml/1.1.0/"> <!-- ************************************************************ 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 > <!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 --> <!ELEMENT people (person)*> <!ATTLIST people default CDATA #IMPLIED home IDREF #IMPLIED > <!ELEMENT person (gender, name*, nick?, eventref*, lds_ord*, objref*, address*, attribute*, url*, childof*, parentin*, personref*, note?, sourceref*)> <!ATTLIST person id CDATA #REQUIRED handle ID #REQUIRED priv (0|1) #IMPLIED marker CDATA #IMPLIED change CDATA #REQUIRED > <!-- GENDER has values of M, F, or U. --> <!ELEMENT gender (#PCDATA)> <!ELEMENT name (first?,last?,suffix?,patronymic?,title?, (daterange|dateval|datestr)?,note?,sourceref*)> <!ATTLIST name alt (0|1) #IMPLIED type CDATA #IMPLIED priv (0|1) #IMPLIED sort CDATA #IMPLIED display CDATA #IMPLIED > <!ELEMENT first (#PCDATA)> <!ELEMENT last (#PCDATA)> <!ATTLIST last prefix CDATA #IMPLIED group CDATA #IMPLIED > <!ELEMENT suffix (#PCDATA)> <!ELEMENT patronymic (#PCDATA)> <!ELEMENT title (#PCDATA)> <!ELEMENT nick (#PCDATA)> <!ELEMENT childof EMPTY> <!ATTLIST childof hlink IDREF #REQUIRED > <!ELEMENT parentin EMPTY> <!ATTLIST parentin hlink IDREF #REQUIRED> <!ELEMENT personref (sourceref*,note?)> <!ATTLIST personref hlink IDREF #REQUIRED priv (0|1) #IMPLIED rel CDATA #REQUIRED > <!ELEMENT address ((daterange|dateval|datestr)?,street?,city?,state?, country?,postal?,phone?,note?,sourceref?)> <!ATTLIST address priv (0|1) #IMPLIED> <!ELEMENT street (#PCDATA)> <!ELEMENT city (#PCDATA)> <!ELEMENT country (#PCDATA)> <!ELEMENT postal (#PCDATA)> <!ELEMENT state (#PCDATA)> <!ELEMENT phone (#PCDATA)> <!-- ************************************************************ FAMILY An element to record information about a family. --> <!ELEMENT families (family)*> <!ELEMENT family (rel?,father?,mother?,eventref*,lds_ord*, objref*,childref*,attribute*,note?,sourceref*)> <!ATTLIST family id CDATA #REQUIRED handle ID #REQUIRED priv (0|1) #IMPLIED marker CDATA #IMPLIED change CDATA #REQUIRED > <!ELEMENT father EMPTY> <!ATTLIST father hlink IDREF #REQUIRED> <!ELEMENT mother EMPTY> <!ATTLIST mother hlink IDREF #REQUIRED> <!ELEMENT childref (sourceref*,note?)> <!ATTLIST childref hlink IDREF #REQUIRED priv (0|1) #IMPLIED mrel (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) #IMPLIED frel (None|Birth|Adopted|Stepchild|Sponsored|Foster|Other|Unknown) #IMPLIED > <!ELEMENT type (#PCDATA)> <!ELEMENT rel EMPTY> <!ATTLIST rel type CDATA #REQUIRED> <!-- ************************************************************ EVENT --> <!ELEMENT events (event)*> <!ELEMENT event (type?,(daterange|dateval|datestr)?,place?,cause?, description?,note?,sourceref*,objref*)> <!ATTLIST event id CDATA #REQUIRED handle ID #REQUIRED priv (0|1) #IMPLIED marker CDATA #IMPLIED change CDATA #REQUIRED > <!-- ************************************************************ SOURCES --> <!ELEMENT sources (source)*> <!ELEMENT source (stitle?,sauthor?,spubinfo?,sabbrev?, note?,objref*,data_item*,reporef*)> <!ATTLIST source id CDATA #REQUIRED handle ID #REQUIRED priv (0|1) #IMPLIED marker CDATA #IMPLIED change CDATA #REQUIRED > <!ELEMENT stitle (#PCDATA)> <!ELEMENT sauthor (#PCDATA)> <!ELEMENT spubinfo (#PCDATA)> <!ELEMENT sabbrev (#PCDATA)> <!-- ************************************************************ PLACES --> <!ELEMENT places (placeobj)*> <!ELEMENT placeobj (ptitle?,coord?,location*,objref*,url*,note?,sourceref*)> <!ATTLIST placeobj id CDATA #REQUIRED handle ID #REQUIRED priv (0|1) #IMPLIED marker CDATA #IMPLIED change CDATA #REQUIRED > <!ELEMENT ptitle (#PCDATA)> <!ELEMENT coord EMPTY> <!ATTLIST coord long CDATA #REQUIRED lat CDATA #REQUIRED > <!ELEMENT location EMPTY> <!ATTLIST location city CDATA #IMPLIED parish CDATA #IMPLIED county CDATA #IMPLIED state CDATA #IMPLIED country CDATA #IMPLIED postal CDATA #IMPLIED phone CDATA #IMPLIED > <!-- ************************************************************ OBJECTS --> <!ELEMENT objects (object)*> <!ELEMENT object (file,attribute*,note?,(daterange|dateval|datestr)?, sourceref*)> <!ATTLIST object id CDATA #REQUIRED handle ID #REQUIRED priv (0|1) #IMPLIED marker CDATA #IMPLIED change CDATA #REQUIRED > <!ELEMENT file EMPTY> <!ATTLIST file src CDATA #REQUIRED mime CDATA #REQUIRED description CDATA #REQUIRED > <!-- ************************************************************ REPOSITORIES --> <!ELEMENT repositories (repository)*> <!ELEMENT repository (rname,type,address*,url*,note?)> <!ATTLIST repository id CDATA #REQUIRED handle ID #REQUIRED priv (0|1) #IMPLIED marker CDATA #IMPLIED change CDATA #REQUIRED > <!ELEMENT rname (#PCDATA)> <!-- ************************************************************ BOOKMARKS --> <!ELEMENT bookmarks (bookmark)*> <!ELEMENT bookmark EMPTY> <!ATTLIST bookmark target (person|family|event|source|place|media|repository) #REQUIRED hlink IDREF #REQUIRED > <!-- ************************************************************ SHARED ELEMENTS --> <!ELEMENT daterange EMPTY> <!ATTLIST daterange start CDATA #REQUIRED stop CDATA #REQUIRED quality (estimated|calculated) #IMPLIED cformat CDATA #IMPLIED > <!ELEMENT dateval EMPTY> <!ATTLIST dateval val CDATA #REQUIRED type (before|after|about) #IMPLIED quality (estimated|calculated) #IMPLIED cformat CDATA #IMPLIED > <!ELEMENT datestr EMPTY> <!ATTLIST datestr val CDATA #REQUIRED> <!ELEMENT note (#PCDATA)> <!ATTLIST note format (0|1) #IMPLIED> <!ELEMENT sourceref (spage?,scomments?,stext?,(daterange|dateval|datestr)?)> <!ATTLIST sourceref hlink IDREF #REQUIRED conf CDATA #IMPLIED > <!ELEMENT eventref (note?)> <!ATTLIST eventref hlink IDREF #REQUIRED priv (0|1) #IMPLIED role CDATA #IMPLIED > <!ELEMENT reporef (note?)> <!ATTLIST reporef hlink IDREF #REQUIRED callno CDATA #IMPLIED medium CDATA #IMPLIED > <!ELEMENT marker EMPTY> <!ATTLIST marker type CDATA #REQUIRED > <!ELEMENT spage (#PCDATA)> <!ELEMENT scomments (#PCDATA)> <!ELEMENT sdate (#PCDATA)> <!ELEMENT stext (#PCDATA)> <!ELEMENT attribute (sourceref*,note?)> <!ATTLIST attribute priv (0|1) #IMPLIED type CDATA #REQUIRED value CDATA #REQUIRED > <!ELEMENT comment (#PCDATA)> <!ELEMENT place EMPTY> <!ATTLIST place hlink IDREF #REQUIRED> <!ELEMENT cause (#PCDATA)> <!ELEMENT description (#PCDATA)> <!ELEMENT url EMPTY> <!ATTLIST url priv (0|1) #IMPLIED type CDATA #IMPLIED href CDATA #REQUIRED description CDATA #IMPLIED > <!ELEMENT objref (attribute*,sourceref*,note?)> <!ATTLIST objref hlink IDREF #REQUIRED priv (0|1) #IMPLIED > <!ELEMENT data_item EMPTY> <!ATTLIST data_item key CDATA #REQUIRED value CDATA #REQUIRED > <!ELEMENT lds_ord ((daterange|dateval|datestr)?,temple?,place?,status?, sealed_to?,note?,sourceref*)> <!ATTLIST lds_ord type CDATA #REQUIRED > <!ELEMENT temple EMPTY> <!ATTLIST temple val CDATA #REQUIRED > <!ELEMENT status EMPTY> <!ATTLIST status val CDATA #REQUIRED > <!ELEMENT sealed_to EMPTY> <!ATTLIST sealed_to hlink IDREF #REQUIRED >